如何四舍五入Python Decimal实例



如何将Python Decimal实例四舍五入到最接近的小数点时的特定位数?

我试过使用文档中概述的.quantize(Decimal('.01'))方法,并在以前的答案中建议,但尽管尝试了不同的ROUND_选项,但它似乎不能正确舍入。我也试过设置getcontext()。Prec,但这似乎只控制了整个数字中位数的总数,而不仅仅是小数。

。我想做的是:

assert Decimal('3.605').round(2) == Decimal('3.61')
assert Decimal('29342398479823.605').round(2) == Decimal('29342398479823.61')
assert Decimal('3.604').round(2) == Decimal('3.60')
assert Decimal('3.606').round(2) == Decimal('3.61')

我认为你需要使用decimal.ROUND_HALF_UP选项来quantize来得到你想要的。

>>> for x in ('3.605', '29342398479823.605', '3.604', '3.606'):
    print x, repr(Decimal(x).quantize(Decimal('.01'), decimal.ROUND_HALF_UP))
3.605 Decimal('3.61')
29342398479823.605 Decimal('29342398479823.61')
3.604 Decimal('3.60')
3.606 Decimal('3.61')

最新更新