如何将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')