use*_*317 -8 c# math floating-point
double a1;
a1 = Math.Pow(somehighnumber, 40);
something.Text = Convert.ToString(xyz);
Run Code Online (Sandbox Code Playgroud)
我得到的结果是E + 41等,它像1,125123E + 41等我不明白为什么.
Eri*_*ert 11
你的问题很不清楚; 在将来,如果您使用实际编译并演示您实际遇到的问题的代码示例发布一个明确的问题,您可能会得到更好的结果.不要让人猜出问题是什么.
如果你想要做的是显示一个没有科学记数法的双精度浮点数,那么使用标准数字格式说明符:
Console.WriteLine(string.Format("{0:N}", Math.Pow(10, 100)));
Run Code Online (Sandbox Code Playgroud)
结果是:
10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00
Run Code Online (Sandbox Code Playgroud)
如果你遇到的问题是结果四舍五入,那么不要使用双精度浮点数; 它们精确到小数点后15位.尝试在具有任意整数精度的BigIntegers中进行算术运算.
这是科学记数法.这意味着1.125123*10 41.如果您的数字变得如此之大以至于完全显示它需要大量的屏幕空间,则科学记数法很有用.此外,浮点运算并不精确,因此即使您确实显示完全数字,大多数数字仍然是不正确的.
如果您想要精确计算,则应使用BigInteger而不是double(此类型存在于.NET 4.0或更高版本中).
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |