我喜欢蓝天,也喜欢雨天。
分类: Windows平台
2014-01-21 16:44:44
如果程序中要求比较两个float值是否相等,你会怎样写呢?
float a;
float b;
if(a == b)
{
...
}
这样写对吗?
其实这样写不对,为什么呢?原因是float型在计算机中存储中只能取近似值,有精度的限制。那么正确的做法是什么呢?
定义一个允许的最小误差,比如:
#define Espinon 0.000001
那么比较a和b是否相等:
if(fabs(a-b)
另外补充说明,向float和double型的数据一般不用 ==和!=符号,一般使用>,>=,<,<=
那么比较一个float型是否为零就要这样写:if(a <= Espinon && a >= Espinon ).