我刚刚重读了Python 3.0的新特性,它说:
round()函数的舍入策略和返回类型已更改。 精确的中间情况现在四舍五入到最接近的偶数结果代替 远离0的。(例如,round(2.5)现在返回2而不是 3)。
和 round的文档:
对于支持round()的内置类型,值舍入为 10的- n次方最接近的倍数;如果两个倍数是 同样接近,四舍五入是对偶数的选择
因此,在v2.7.3中:
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
正如我所预料的。然而,现在在v3.2.3下:
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
这似乎有违直觉,与我的理解相悖 四舍五入(肯定会绊倒人)。英语不是我的母语,但是 直到我读到这篇文章,我以为我知道四舍五入的意思:-/我确定 在v3被引入的时候,肯定有一些讨论 但在我的寻找中,我找不到一个好的理由。
有人知道为什么这个变成了这个吗? 有没有其他主流编程语言(例如,C, c++, Java, Perl, ..)做这种类型的舍入(对我来说不一致)?
我错过了什么?
更新:@Li-aungYip关于“银行家的舍入”的评论给了我正确的搜索词/关键字来搜索,我发现了这个SO问题:为什么。net使用银行家的舍入作为默认值?,所以我会仔细阅读。