浮点数和整型数在计算机中表示的方式不相同,整型数能够直接比较相等,但是浮点数不能直接比较是否相等,如下:
int main()
{
int n=0;
float val=1.0, x1=1.9/2.1, y2=2.1/1.9;
for(int i=0;i<21;++i)
val *= x1;
while(val!=1.0)
{
val *=y2;
n++;
}
printf("%d \n", n);
return 0;
}
上述程序的输出结果是:无限循环。
因为while条件中,两个无符号数直接进行了相等比较。一般,我们在比较两个浮点数是否相等时,采用abs(x1-x2)<1e-7。