我了解0.0375 + 0.0375 + 0.0375
等计算会产生0.11249999999999999
。
如果我要在for循环(x次)中不断地将'0.0375'添加到双变量中,您会发现由于浮点精度问题,每次迭代的结果会逐渐变得越来越不准确吗? / p>
我可以容忍上面所示的近似值,但是随着迭代次数的增加,不能有一个继续偏离实际结果的结果。
编辑:
我运行了以下测试(有几个值):
std::cout.precision(17);
double t = 0.42300*783698177;
std::cout << std::fixed << t << std::endl;
double g = 0;
for (int y = 0; y < 783698177; y ++){
g = g + 0.42300;
}
std::cout << std::fixed << g << std::endl;
正如我所怀疑的,随着迭代次数的增加,结果越可能(或者更多)偏离实际值。
还有其他人观察过这个吗?
虽然我觉得我理解为什么会发生这种情况,但是有人可以为这种情况提供直观(或基本的数学)解释吗?