如何在Python(版本3)中使用传统的十进制数舍入?

Ome*_*les 2 python decimal python-3.x

我试图弄清楚如何使用Python版本3(特别是版本3.4.0)在小学和中学教授的传统方法来舍入十进制数.

例如,使用十进制数0.745,我试图将其四舍五入到最接近的百分位数.传统上,舍入值为0.75,但以下代码给出0.74:

>>> import decimal
>>> a = decimal.Decimal("0.745")
>>> round(a, 2)
Decimal('0.74')
Run Code Online (Sandbox Code Playgroud)

但是,将原始值更改为0.746似乎返回0.75:

>>> import decimal
>>> b = decimal.Decimal("0.746")
>>> round(b, 2)
Decimal('0.75')
Run Code Online (Sandbox Code Playgroud)

这似乎与传统的舍入相矛盾(如果我没记错的话).有人能引导我在Python中使用正确的舍入方法吗?

更新: 使用所选答案的指导,这是我的问题的完整代码解决方案:

>>> import decimal
>>> decimal.getcontext().rounding = decimal.ROUND_HALF_UP
>>> a = decimal.Decimal("0.745")
>>> round(a, 2)
Decimal('0.75')
Run Code Online (Sandbox Code Playgroud)

Die*_*Epp 5

这是预期的(和最好的)行为:所谓的"银行家的舍入",它是无偏见的,并且将一半舍入到最接近的整数.

你可以随时:

import decimal
decimal.getcontext().rounding = decimal.ROUND_HALF_UP
Run Code Online (Sandbox Code Playgroud)

请注意,ROUND_HALF_UP有偏见,这就是为什么它不是默认值.