首页 > 解决方案 > C ++ double 除以 double 结果为舍入数

问题描述

我有以下计算:

    double a = 141150, b = 141270, c = 141410;
    double d = (a + b + c) / 3;
    cout << d << endl;

输出显示d = 141277,而d应该是141276.666667。计算包括双加和双除。为什么我得到一个四舍五入的结果?顺便说一句d = (a + b + c) / 3.0也没用。

然而在另一个类似的计算中,结果是正确的:

    double u = 1, v = 2, x = 3, y = 4;
    double z = (u + v + x + y) / 4;

z 结果2.5如预期。这两个计算本质上是一样的,但是为什么会有不同的行为呢?

最后,我知道 C++ 会自动截断转换为较低精度的数字,但我从未听说过自动舍入。有人可以阐明一下吗?

标签: c++c++11

解决方案


在这里,您可以使用代码片段作为示例找到同一问题的多个答案。它确实包括那些家伙在评论中所说的话


推荐阅读