我有一个整数表示以美分为单位的价格。使用Python格式字符串,如何将此值转换为带有两位小数的美元?例子:
1234 => 12.34
5 => 0.05
999 => 9.99
编辑:我应该给一些背景知识。我将价格存储在数据库中作为整数,以确保我不会失去精度。我不想使用Decimal数据类型,因为这些值也将用于Javascript中的计算,因此整数最简单。我希望能够使用stringformat标签在Django模板中显示格式化的值。因此,将数字除以100不起作用。有没有办法在不分割的情况下添加小数点?
答案 0 :(得分:13)
你应该尽量避免使用花车代表金钱(数字不准确可能太容易蔓延)。十进制模块提供了一种有用的数据类型来表示货币,因为它可以精确地表示十进制数,例如0.05。
可以像这样使用:
import decimal
cents = 999
dollars = decimal.Decimal(cents) / 100
print dollars
答案 1 :(得分:6)
如果您不关心本地化,那么只需除以100并格式化:
>>> for cents in [ 1234, 5, 999 ]:
... '{0:.02f}'.format(float(cents) / 100.0)
...
'12.34'
'0.05'
'9.99'
如果您关心本地化,请使用locale
模块:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "") # use the user-default locale
'en_US.UTF-8'
>>> for cents in [ 1234, 5, 999 ]:
... locale.currency(float(cents) / 100.0)
...
'$12.34'
'$0.05'
'$9.99'
答案 2 :(得分:5)
使用str.format:
for i in (1234,5,999):
print('{:.2f}'.format(i/100.))
产量
12.34
0.05
9.99
在Python2.6中使用'{0:.2f}'
而不是'{:.2f}'
。