c ++双打总和的结果是错误的

时间:2016-05-02 13:59:50

标签: c++ floating-point precision

bool func(double &u, double &v){
    .
    .
    .
    if((u+v) <= 1.0)
        return false;
    cout <<"u:  " << u << "  v:  " << v << endl;
    return true;
}

我有这样的功能。 输出是:

u: 0.914812  v:  0.0851877

他们的总和是: 0.9999997 。但是程序没有进入if语句。它返回true。为什么?

1 个答案:

答案 0 :(得分:2)

考虑0.914812499999999和0.0851877499999999。也许这些数字并不是你认为的那样。以更精确的方式打印它们