【发布时间】:2017-03-30 14:48:48
【问题描述】:
任何人都可以解释或提出解决方案,为什么当我在 Python 3 中将小数四舍五入且上下文设置为四舍五入时,它会将 2.5 舍入为 2,而在 Python 2 中它正确地四舍五入为 3:
Python 3.4.3 和 3.5.2:
>>> import decimal
>>> context = decimal.getcontext()
>>> context.rounding = decimal.ROUND_HALF_UP
>>> round(decimal.Decimal('2.5'))
2
>>> decimal.Decimal('2.5').__round__()
2
>>> decimal.Decimal('2.5').quantize(decimal.Decimal('1'), rounding=decimal.ROUND_HALF_UP)
Decimal('3')
Python 2.7.6:
>>> import decimal
>>> context = decimal.getcontext()
>>> context.rounding = decimal.ROUND_HALF_UP
>>> round(decimal.Decimal('2.5'))
3.0
>>> decimal.Decimal('2.5').quantize(decimal.Decimal('1'), rounding=decimal.ROUND_HALF_UP)
Decimal('3')
【问题讨论】:
标签: python python-3.x decimal rounding