python:如何将货币转换为小数?

27 投票
11 回答
60839 浏览
提问于 2025-04-16 05:11

我有一个字符串变量里面存着美元的数额。

dollars = '$5.99'

我该怎么把这个字符串转换成小数,这样我就可以对它进行加法运算,比如加上其他的美元?

11 个回答

16

假设存储在变量 dollars 中的字符串是通过 Python 的 locale 模块生成的。要将其转换回浮点数(小数),有一种可能更简单的方法,就是使用同一个模块里的 atof 函数。只要在两个方向上(从货币到字符串和反过来)使用相同的 setlocale 参数,这个方法就应该能正常工作。

例如:

import locale
locale.setlocale(locale.LC_ALL, '')
value = 122445.56
value_s = locale.currency(value, grouping=True)
#generates $122,445.56

要将其转换回去:

value2 = locale.atof(value_s[1:])
#value2 = 122445.56 
value == value2 #True
28

如果你只想要一个整数形式的分数:

cents_int = int(round(float(dollars.strip('$'))*100))

如果你想要一个小数,可以直接使用...

from decimal import Decimal
dollars_dec = Decimal(dollars.strip('$'))

如果你确定字符串里总会有美元符号,你可以用 dollars[1:] 来代替 dollars.strip('$'),不过使用 strip() 这样的方法可以处理那些没有美元符号的字符串(比如 5.99 而不是 $5.99)。

8

有一个简单的方法:

dollar_dec = float(dollars[1:])

撰写回答