如何将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')
Run Code Online (Sandbox Code Playgroud)
我认为你需要使用该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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |