这样一段C++程序:
double cvt(int v) {
return double(v)/10000.0;
}
for (;;) {
double x = cvt(190000);
}
运行几万次的时候,大部分时候x都是19.0000,但有时候会出现 19.000000001,这可能是什么原因造成的?
用的是Linux g++ 9.0 -O3 编译得到的。
原来我以为浮点误差是因为误差的积累导致的,但象这样的code,输入完全一致的时候也会出现不同,这可能是什么原因造成的?是因为硬件造成的吗?用-O2是否可以避免?还是说浮点误差就是不能避免的?
谢谢。
--
FROM 45.86.208.*