首页 > 解决方案 > 当 5 出现在第 (n+1) 次时,是否有关于带小数点的数字如何按 %.nf 舍入的规则?

问题描述

我正在玩python打印功能并遇到了这个问题。

print('%.2f' % (0.665)) # 0.67
print('%.3f' % (0.0625))# 0.062

由于0.665保留两位小数,结果为0.67,我希望保留三位小数0.0625的输出为0.063,但结果为0.062。

标签: pythonfloating-pointrounding

解决方案


一般规则是,当一个数字的四舍五入部分正好是 5 时,您选择使最终结果数字相等的方向 - 这样可以避免在这些中间情况下出现任何系统偏差。这适用于 的情况,这是在浮点二进制0.0625中具有精确0.375表示的不常见十进制数之一 - 它的最后一位确实是 5。(对于在这种情况下四舍五入的数字示例,请尝试两个地方。)0.665另一方面,数字实际上并不存在 - 最接近的浮点值实际上是 0.6650000000000000355271。四舍五入的部分肯定(虽然只是稍微)大于 5,所以它必然四舍五入。


推荐阅读