双精度总和的 C++ 结果是错误的

c++ result of sum of doubles is wrong

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 语句。 returns 没错。为什么?

考虑 0.914812499999999 和 0.0851877499999999。也许这些数字不是您认为的那样。更精确地打印它们