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。
本文介绍了如何正确地比较float类型的数值与0之间的大小关系。由于浮点数计算中可能存在微小误差,直接使用==进行比较可能导致误判。文章提供了一个通过判断两个数之差的绝对值是否小于一个极小值来确定它们是否相等的方法。

被折叠的 条评论
为什么被折叠?



