先看下面的代码:
#include <iostream>
using namespace std;
int main()
{
double a=0.65f,b=0.6f;
double c=a-b;
if(c==0.05)
cout<<"对了"<<endl;
else
cout<<"错了"<<endl;
return 0;
}
输出结果是:错了
我们可以将断点设置在if(c==0.5)这里,我们可以发现c的值不等于0.05
见图:
我们来分析下原因:
浮点数表示法的确存在精度丢失的问题,是由于最低有效位的限制造成的