双精度增加误差

时间:2018-02-07 19:37:29

标签: c++ double precision

我了解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;

正如我所怀疑的,随着迭代次数的增加,结果越可能(或者更多)偏离实际值。

还有其他人观察过这个吗?

虽然我觉得我理解为什么会发生这种情况,但是有人可以为这种情况提供直观(或基本的数学)解释吗?

0 个答案:

没有答案