1

你如何解释这里发生的舍入?我认为将浮点值分配给 Int 总是会导致小数点后的价值损失?

int z=39.99999999999999999999999;
printf("%d",z); // gives 40

谢谢

4

2 回答 2

6

你不可能有足够的双精度来容纳所有这些 9。

>>> '%.15f' % 39.9999999999999
'39.999999999999901'
>>> '%.15f' % 39.99999999999999
'39.999999999999993'
>>> '%.15f' % 39.999999999999999
'40.000000000000000'
于 2012-04-26T07:16:40.553 回答
-1

正如您所说:C 的浮点到整数转换会截断(丢弃)小数部分。

您使用的是哪个编译器?我相信该分配不是在运行时完成的,它可能是编译器问题。

参考:comp.lang.c 常见问题列表

于 2012-04-26T08:33:37.837 回答