首页 > 解决方案 > 具有这种奇怪行为的 round() 的功能是什么?

问题描述

我想对一些整数进行四舍五入,但我遇到了 round() 的奇怪功能,例如

round(2.1) = 2

round(2.5) = 2 #it rounds to ceil

round(2.7) = 3

它用奇数四舍五入如下

round(5.1) = 5

round(5.5) = 6 #it rounds to floor

round(5.7) = 6

它用 x = 偶数将 X.5 舍入到地板,但用 X = 奇数舍入到 ceil

我想问一下这一轮的优势是什么?在我们的示例中我可以在哪里使用它?或者它的用途是什么?

标签: python-3.x

解决方案


看起来如果它接近它会进入偶数选项。从文档https://docs.python.org/3/library/functions.html#round

返回小数点后四舍五入到 ndigits 精度的数字。如果 ndigits 被省略或为 None,则返回最接近其输入的整数。

对于支持 round() 的内置类型,值被四舍五入到最接近 10 的幂减去 ndigits 的倍数;如果两个倍数相等,则向偶数选择进行舍入(例如,round(0.5) 和 round(-0.5) 均为 0,round(1.5) 为 2)。任何整数值都对 ndigits 有效(正数、零或负数)。如果省略 ndigits 或 None,则返回值为整数。否则返回值的类型与数字相同。

对于一般的 Python 对象编号,将委托四舍五入到编号。圆形

注意 浮点数的 round() 行为可能令人惊讶:例如,round(2.675, 2) 给出 2.67 而不是预期的 2.68。这不是错误:这是因为大多数小数部分不能完全表示为浮点数。有关详细信息,请参阅浮点算术:问题和限制。


推荐阅读