双精度总和的 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。也许这些数字不是您认为的那样。更精确地打印它们
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。也许这些数字不是您认为的那样。更精确地打印它们