对于浮点数a,不能用if(a==0)来判断a与0的大小
应该判断a是否位于0附近的一个很小的区间[-EPS,EPS]中,或者说a的绝对值小于等于一个很小的数EPS(可定义EPS=1e-6)
即用if(fabs(a)<=EPS) /* 正确的实数与0的比较方法 */
具体可以这么理解:如浮点数运算中1/3+1/3+1/3=0.999999 并不等于1
那么当你计算1/3+1/3+1/3-1 与0的大小关系时 使用if(a==0)来判断就会判断错误
于是我们定义EPS=1e-6
#define EPS 1e-6
来判断fabs(1/3+1/3+1/3-1)<=EPS 即可
(因为float 一般保留6位小数,所以用1e-6 0.000001判断)
如图:
注意这里a=1.0/3 而不能用1/3 否则a=1/3会显示a=0.000000