Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
你如何解释这里发生的舍入?我认为将浮点值分配给 Int 总是会导致小数点后的价值损失?
int z=39.99999999999999999999999; printf("%d",z); // gives 40
谢谢
你不可能有足够的双精度来容纳所有这些 9。
>>> '%.15f' % 39.9999999999999 '39.999999999999901' >>> '%.15f' % 39.99999999999999 '39.999999999999993' >>> '%.15f' % 39.999999999999999 '40.000000000000000'
正如您所说:C 的浮点到整数转换会截断(丢弃)小数部分。
您使用的是哪个编译器?我相信该分配不是在运行时完成的,它可能是编译器问题。
参考:comp.lang.c 常见问题列表