python – int(ceil(x))是否表现良好?

如果我有一个浮点数x,它在[0,106]的范围内,那么在Python中是否保证int(ceil(x))将被正确舍入?

似乎有可能从我知道的很少,ceil可能会向下舍入导致不正确的结果.类似于:x = 7.6,ceil(x)= 7.999 ..,int(ceil(x))= 7.这会发生吗?

最佳答案
正确实现的ceil返回ceil(x)的精确数学值,没有错误.当使用IEEE 754或任何合理的浮点系统时,ceil不会出现舍入误差.

这不能防止来自ceil功能以外的其他来源的不利影响.例如,ceil(1.000000000000000000000000000000001)将返回1,因为1.000000000000000000000000000000001在调用ceil之前转换为浮点值,并且该转换将其结果舍入.类似地,从double转换为float然后调用ceil可能会产生一个不是原始double值的上限的值.

将ceil的结果转换为int当然依赖于int的范围.只要值在范围内,转换就不应更改该值.

转载注明原文:python – int(ceil(x))是否表现良好? - 代码日志