double f1,f2;
...
if(f1==f2)
...
上面的代码是有错误的...由于精度的原因,所以不能用等号来判断两个小数是否相等。可以设置一个极小值来相对判断,参考代码如下:
bool isEqual(const double a, const double b) {
const eps_0 = 1.0e-6, rel_error = 10e-4;
bool isEqualFlag = FALSE;
if(fabs(a-b)<=eps_0) {
isEqualFlag = TRUE;
}
else{
if(fabs(a) >= 1000.0) {
if(fabs(a-b)<=rel_error*fabs(a)) {
isEqualFlag = TRUE;
}
}
}
return isEqualFlag;
}