我想这是一个相当基本的问题,但我不知道为什么这两段代码会给出不同的结果。Pentium 处理变量 Divider 的方式是否不同于中间值( 256.0 / (double)k )?
int j=64, k=20;
double x, y, Divider;
Divider = 256.0 / (double)k;
x = (double)j / Divider - 5.0;
y = (double)j / ( 256.0 / (double)k ) - 5.0;
结果:x = -2.77555756156289E-16 y = 0.0
作为参考,我使用的是 Embarcadero 的 XE3 C++ Builder,它提供了与 Builder 6 相同的结果。我在两者上都使用了默认编译器设置。