我认为下面的程序应该至少运行一次,因为条件是真的,或者我可能弄错了.请开导我



是一个非常简单的程序,但我不明白为什么它什么都不打印。它至少应该运行一次。

int main()
{
float x = 1.1 ;
while ( x == 1.1 )
{
printf ( "%fn", x ) ;
x = x-0.1 ;
}
return 0 ;
}

小数部分1.1不能用二进制浮点数精确表示(就像小数部分1/3不能用十进制浮点数精确表达一样(。

当您尝试将1.1放入double类型时,您实际存储的是1.100000000000000088817841970012523233890533447265625

当你试图将1.1放入float类型时,你真正存储的是1.100000023841885791015625

这些值是不相等的,所以";x==1.1〃;是假的!

要使您的程序工作,请使用双

or use float:
````float x=1.1f; while (x==1.1f) ... 
but don’t mix the types

相关内容

最新更新