float类型的数a和0比较使用:
先判断是否相等:fabs(a-0)<1e-5。
再判断a大于0:a>0
和判断a小于0:a<0
由于浮点数的计算误差,0可能出现0.00000001或者-0.00000001等无限接近于0,所以先把该数a和0作差后的绝对值与一个很小的数比较,如果小于这个很小的数,则说明a等于0,否则就可以直接用a>0和a<0判断a和0的关系。
例如:
#include "stdio.h" #include<math.h> int main() { float i=0.01; if(fabs(i-0)<1e-5) printf("i等于0"); else if(i>0) printf("i大于0"); else printf("i小于0"); return 0; } /* 运行结果: i大于0 */
所以用float 类型 == 0 这种写法是错误的。 因为它永远也不会等于0。