通过指数表示法分配和计算

时间:2011-11-10 16:16:54

标签: c# visual-studio-2010 floating-point scientific-notation

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

如果我尝试在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计算中计算相同的计算,我会得到预期的结果:

1E-9 * 100 = 0,0000001

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

1 个答案:

答案 0 :(得分:0)

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

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

请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic