我想展示:
49为49.00
以及:
54.9为54.90
无论十进制的长度或小数是否有小数位,我都想显示Decimal
小数点2位,我想用一种高效的方式来做。目的是显示货币价值。
例如,4898489.00
您应该使用新格式规范若要定义如何表示您的值,请执行以下操作:
>>> from math import pi # pi ~ 3.141592653589793
>>> '{0:.2f}'.format(pi)
'3.14'
文档有时可能有些迟钝,因此我建议使用以下更容易阅读的引用:
Python String Format Cookbook展示了这种新样式的示例。.format()
字符串格式
Python 3.6字串插值(也称为f-字符串),所以现在您可以将上面的内容写得更简洁,如:
>>> f'{pi:.2f}'
'3.14'
>>> 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
下一个问题是
一旦我有了有效的两个位置输入,我如何在整个应用程序中保持不变?
如果你把你的Decimal
S的精度超过小数点(意味着将所有数字保持在小数点的左边,而不超过...),并将它们转换为字符串。使用str
:
str(Decimal('10'))
# -> '10'
str(Decimal('10.00'))
# -> '10.00'
str(Decimal('10.000'))
# -> '10.000'