浮点数的比较问题
整数可以通过"== " 进行比较但是浮点数不行,在软件代码的静态测试中明确规定浮点数判断相等不能用"==" 进行比较,浮点数判断相等需要比较误差值
下面举例说明如何对浮点数进行判断
#include <stdio.h>
#include <math.h>
int main()
{
float a = 0.1686;
float b = 0.1686;
//错误写法
if (a == b)
{
printf("浮点数a等于b\n");
}
else
{
printf("浮点数a不等于b\n");
}
//正确写法
if (fabs(a-b)< 1e-4) //通过比较2者直接的误差进行判断是否相等
{
printf("浮点数a和b误差小于0.0001,a等于b\n");
}
else
{
printf("浮点数a和b误差大于0.0001,a不等于等于b\n");
}
return 1;
}