如何使用Python字符串格式将表示美分的整数转换为表示美元的浮点?

如何使用Python字符串格式将表示美分的整数转换为表示美元的浮点?,python,django-templates,string-formatting,currency,Python,Django Templates,String Formatting,Currency,我有一个整数,表示以美分为单位的价格。使用Python格式字符串,如何将该值转换为小数点后两位的美元?示例: 1234 => 12.34 5 => 0.05 999 => 9.99 编辑:我应该提供一些背景资料。我将价格作为整数存储在数据库中,以确保不丢失精度。我不想使用Decimal数据类型,因为这些值也将在Javascript的计算中使用,因此整数将是最简单的处理方法。我希望能够使用stringformat标记在Django模板中显示格式化的值。因此,将数字除以100是行

我有一个整数,表示以美分为单位的价格。使用Python格式字符串,如何将该值转换为小数点后两位的美元?示例:

1234 => 12.34
5 => 0.05
999 => 9.99
编辑:我应该提供一些背景资料。我将价格作为整数存储在数据库中,以确保不丢失精度。我不想使用Decimal数据类型,因为这些值也将在Javascript的计算中使用,因此整数将是最简单的处理方法。我希望能够使用stringformat标记在Django模板中显示格式化的值。因此,将数字除以100是行不通的。有没有一种不除法添加小数点的方法?

使用:

屈服

12.34
0.05
9.99

在Python2.6中,使用
'{0:.2f}'
而不是
'{.2f}'

如果您不关心本地化,那么只需除以100并格式化它:

>>> for cents in [ 1234, 5, 999 ]:
...     '{0:.02f}'.format(float(cents) / 100.0)
...
'12.34'
'0.05'
'9.99'
如果您确实关心本地化,请使用以下模块:


你应该尽量避免使用浮点数来表示货币(数字上的不准确很容易就出现了)。decimal模块为表示货币提供了一个有用的数据类型,因为它可以精确地表示十进制数字,例如0.05

它可以这样使用:

import decimal
cents = 999
dollars = decimal.Decimal(cents) / 100
print dollars

不要使用浮动汇率。这是完全错误的。Decimal非常适合您的需要。它可以转换为字符串(对于Javascript),所有财务计算都可以正确使用十进制。我不确定使用
浮动和货币是否是个好主意。这不适用于0美分(返回0)、10美分(返回0.1)等各种数字。
>>> 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'
import decimal
cents = 999
dollars = decimal.Decimal(cents) / 100
print dollars