我的美元价格为Decimal
,精确度为.01
(以分为单位)。
我希望以字符串格式显示它,就像收到消息"You have just bought an item that cost $54.12."
问题是,如果价格恰好是圆的,我想只显示没有分数,如$54
。
如何在Python中完成此操作?请注意,我使用的是Python 2.7,所以我很乐意使用新式而不是旧式的字符串格式。
答案 0 :(得分:6)
>>> import decimal
>>> n = decimal.Decimal('54.12')
>>> print('%g' % n)
'54.12'
>>> n = decimal.Decimal('54.00')
>>> print('%g' % n)
'54'
答案 1 :(得分:1)
我会做这样的事情:
import decimal
a = decimal.Decimal('54.12')
b = decimal.Decimal('54.00')
for n in (a, b):
print("You have just bought an item that cost ${0:.{1}f}."
.format(n, 0 if n == n.to_integral() else 2))
其中{0:.{1}f}
表示使用第二个参数中的小数位数将第一个参数打印为float,第二个参数为0
,当数字实际上等于其整数版本且{{1当我认为不是你想要的时候。
输出结果为:
你刚买了一件售价54.12美元的商品。
你刚买了一件售价54美元的商品
答案 2 :(得分:1)
>>> a=54.12
>>> x="${:.4g}".format(a)
>>> print x
$54.12
>>> a=54.00
>>> x="${:.4g}".format(a)
>>> print x
$54
答案 3 :(得分:0)
这是你想要的吗?
注意:x
是原始价格。
round = x + 0.5
s = str(round)
dot = s.find('.')
print(s[ : dot])
答案 4 :(得分:-1)
>>> dollars = Decimal(repr(54.12))
>>> print "You have just bought an item that cost ${}.".format(dollars)
You have just bought an item that cost $54.12.