0

你有没有观察到这种现象:

如果我尝试在 Visual Studio 2010 C# .Net 的 ImmediateWindow 中计算以下计算,我会得到这个奇怪的解决方案。

1E-9 * 100 = 0.00000010000000000000001
1E-9 * 1E+2 = 0.00000010000000000000001

即使我这样计算:

double val = 1E-9;
0.000000001
val = val * 100;
0.00000010000000000000001

如果我在 Windows calc 中计算相同的计算,我会得到预期的结果:

1E-9 * 100 = 0,0000001

如果有人对这种行为有所了解,我会很高兴获得信息。

4

1 回答 1

0

是否使用指数表示法并不重要,您只是遇到了浮点精度。如果您想要更好的准确性,请使用十进制,例如:

decimal val = 1E-9;
0.000000001
val = val * 100;
0.0000001

看看每个计算机科学家应该知道的关于浮点运算的知识

于 2012-07-26T13:30:40.730 回答