是一个非常简单的程序,但我不明白为什么它什么都不打印。它至少应该运行一次。
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