我有一个Python的Decimal对象(一个货币数额),我想将它舍入到两个小数位。我尝试使用常规的round()函数来实现这一点。不幸的是,这会返回一个浮点数,使其无法继续使用:
>>> from decimal import Decimal
>>> a = Decimal('1.23456789')
>>> type(round(a, 2))
<type 'float'>
在decimal模块中,我看到了几个关于四舍五入的内容:
- ROUND_05UP
- ROUND_CEILING
- ROUND_DOWN
- ROUND_FLOOR
- ROUND_HALF_DOWN
- ROUND_HALF_EVEN
- ROUND_HALF_UP
- ROUND_UP
- 舍入
我觉得这些都不符合我的要求(或者我错了吗?)。
所以我的问题是:有没有人知道如何可靠地将Python Decimal四舍五入到两个小数位,以便我可以继续使用Decimal?欢迎所有提示!
decimal.getcontext().prec=2
。 - ooga12345678
转换为1.2E+7
,但仅在对其进行计算后才能这样做,而不是在定义后立即进行)。 - Tim Pietzckerround
在 Python 3 中直接返回一个Decimal
实例;只有在 Python 2 中才会转换为float
。即使如此,如果你想要除了默认的“银行家舍入”模式以外的其他模式,仍然需要使用quantize
方法。 - Mark Dickinson