您观察过这种现象吗?
如果我尝试在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
如果有人知道这种行为,我将非常高兴得到的信息。
不管你是否使用指数符号,你只是遇到浮点精度。如果您想要更好的精度,请使用十进制,例如:
decimal val = 1E-9;
0.000000001
val = val * 100;
0.0000001
参见