Looks like both 4.5 and 5.5 have exact float representations in Python 3.5:
>>> from decimal import Decimal
>>> Decimal(4.5)
Decimal('4.5')
>>> Decimal(5.5)
Decimal('5.5')
If this is the case, then why
>>> round(4.5)
4
>>> round(5.5)
6
?
答案 0 :(得分:5)
在Python 3中,精确的中途数字四舍五入到最接近的偶数结果。这behavior changed in Python 3
round()
函数舍入策略和返回类型已更改。确切的中途情况现在四舍五入到最接近的偶数结果而不是零。 (例如,round(2.5)现在返回2而不是3.)round(x [,n])现在委托给x。round ([n])而不是总是返回一个float。它通常在使用单个参数调用时返回一个整数,并在使用两个参数调用时返回与x相同类型的值。
答案 1 :(得分:3)
Python 3使用Bankers Rounding,它将.5
值舍入到最接近的偶数。