【发布时间】:2013-07-10 20:42:23
【问题描述】:
这里 x 取 0.699999 而不是 0.7,但 y 取 0.5 作为分配。你能告诉我这种行为的确切原因是什么。
#include<iostream>
using namespace std;
int main()
{
float x = 0.7;
float y = 0.5;
if (x < 0.7)
{
if (y < 0.5)
cout<<"2 is right"<<endl;
else
cout<<"1 is right"<<endl;
}
else
cout<<"0 is right"<<endl;
cin.get();
return 0;
}
【问题讨论】:
-
这个问题已经被问过很多次了......不幸的是,这个值似乎总是不同的,所以自动搜索骗子很难。
-
你永远不应该严格比较浮点数。使用小公差,例如 float eps = 1e-12; if (a
标签: c++ visual-c++ floating-point dev-c++