我想显示:
49 如 49.00
49
49.00
和:
54.9 如 54.90
54.9
54.90
不管小数点的长度或是否有任何小数位,我都希望显示Decimal带有2个小数位的a,并且我想以一种有效的方式来做到这一点。目的是显示货币值。
Decimal
例如, 4898489.00
4898489.00
我想您可能正在使用模块中的Decimal()对象decimal?(如果您需要精确到小数点后两位精确到两位数且任意大的数字,那么绝对应该如此,这就是您的问题标题所暗示的……)
Decimal()
decimal
如果是这样,文档的“ 十进制常见问题解答” 部分将包含一个问题/答案对,这可能对您有用:
问:在具有两位小数位的定点应用程序中,某些输入有很多位,需要四舍五入。其他人不应有多余的数字,需要进行验证。应该使用什么方法? 答:Quantize()方法将舍入到固定数量的小数位数。如果设置了不精确陷阱,则它对于验证也很有用:
问:在具有两位小数位的定点应用程序中,某些输入有很多位,需要四舍五入。其他人不应有多余的数字,需要进行验证。应该使用什么方法?
答:Quantize()方法将舍入到固定数量的小数位数。如果设置了不精确陷阱,则它对于验证也很有用:
>>> TWOPLACES = Decimal(10) ** -2 # same as Decimal('0.01') >>> # Round to two places >>> Decimal('3.214').quantize(TWOPLACES) Decimal('3.21') >>> # Validate that a number does not exceed two places >>> Decimal('3.21').quantize(TWOPLACES, context=Context(traps=[Inexact])) Decimal('3.21') >>> Decimal('3.214').quantize(TWOPLACES, context=Context(traps=[Inexact])) Traceback (most recent call last): ... Inexact: None
下一个问题是
问:一旦有了有效的两个位置输入,如何在整个应用程序中保持不变?
如果您需要答案(以及许多其他有用的信息),请参阅 docs的上述部分 。另外,如果您将Decimals的精度保持在小数点后两位(这意味着将所有数字保持在小数点的左边,将所有数字保持在小数点的右边,并且不再有其他精度……),然后将它们转换为str可以正常工作:
str
str(Decimal('10')) # -> '10' str(Decimal('10.00')) # -> '10.00' str(Decimal('10.000')) # -> '10.000'