分析:无论是float还是double类型的变量,都是有精度限制的,所以一定要避免将浮点变量用“==”或者“=”与数字比较,应设法转化成“>=”或者“<=”的形式。
应当将if(x==0.0)转化为 if((x >= -EPSINON)&&(x <= EPSINON)) //epsinon为修正值
案例1:
#include <stdio.h>
{
double temp = 0.3;
printf("%d\n",(int)(temp*10));
return 0;
}
此时的打印结果是2,当temp=0.7时,打印结果是6;
浮点数与零比较应该转化为下面的形式:
#include <stdio.h>
{
double temp = 0.0;
if(temp >= -0.000001 && temp <= 0.000001)
printf("temp == 0\n");
else
printf("temp != 0\n");
return 0;
}