下面的程序似乎看起来会运行一次,但是当我在Turbo C中运行时,输出什么都没有。 任何人都能解释一下吗?
#include<stdio.h>
int main()
{
float x=1.1;
while(x==1.1)
{
printf("%f \n",x);
x=x-0.1;
}
return 0;
}
答案 0 :(得分:1)
默认情况下,浮点数存储为“double”类型。因此,对float和double值进行了比较。
我想,
if(x==1.1f)
它应该解决问题。
同样FLT_EPSILON
是两个浮点数之间的最小差异,它们是相同的。
if( abs(x-1.1f) <= FLT_EPSILON)
应该有效
答案 1 :(得分:0)
您可以按如下方式重写循环条件 -
while((1.0009<x)&&(x<1.10001))
因为此x=1.1
中的x
永远不会完全1.1
。在较高的小数位,它可以有不同的值。
您可以在较高的小数位置看到代码的值和工作示例 - https://ideone.com/IgrLAY