VC++6.0 非常诡异的数值精度问题
VC++6.0运行以下代码程序代码:
float sum = 0; for (int i = 0; i < 10000000; i++) { sum += (float)i; } printf("%f \n", sum); printf("%d \n", sizeof(sum));
结果:
49999995000000.000000 4
把倒数两行互换一下
结果还会不一样
然而gcc和clang的结果均为:48714878025728.000000 (不管优化开了几档)
同样是float,怎么上世纪的东西精度还更高