How to use Python string formatting to convert an integer representing cents to a float representing dollars?

南笙酒味 提交于 2019-11-28 11:29:16

You should try hard to avoid ever using floats to represent money (numerical inaccuracy can too easily creep in). The decimal module provides a useful datatype for representing money as it can exactly represent decimal numbers such as 0.05.

It can be used like this:

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

If you don't care about localization, then simply divide by 100 and format it:

>>> for cents in [ 1234, 5, 999 ]:
...     '{0:.02f}'.format(float(cents) / 100.0)
...
'12.34'
'0.05'
'9.99'

If you do care about localization, then use the locale module:

>>> 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'

Using str.format:

for i in (1234,5,999):
    print('{:.2f}'.format(i/100.))

yields

12.34
0.05
9.99

In Python2.6 use '{0:.2f}' instead of '{:.2f}'.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!