我在字符串变量中有美元
dollars = '$5.99'
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为十进制而不是字符串,以便我可以用它来添加美元呢?
Amb*_*ber 20
如果你只想要一个整数美分:
cents_int = int(round(float(dollars.strip('$'))*100))
Run Code Online (Sandbox Code Playgroud)
如果你想要一个十进制,只需使用...
from decimal import Decimal
dollars_dec = Decimal(dollars.strip('$'))
Run Code Online (Sandbox Code Playgroud)
如果您知道美元符号将始终存在,您可以使用dollars[1:]而不是dollars.strip('$'),但使用strip()let还可以处理省略美元符号的字符串(5.99而不是$5.99).
小智 12
假设存储在变量中的字符串dollars是使用python的locale模块生成的.将其转换回float(十进制)的一种可能更清晰的方法是使用atof同一模块中的函数.只要您setlocale在两个方向上使用相同的参数(从货币到字符串,反之亦然),它就应该工作.
例如:
import locale
locale.setlocale(locale.LC_ALL, '')
value = 122445.56
value_s = locale.currency(value, grouping=True)
#generates $122,445.56
Run Code Online (Sandbox Code Playgroud)
将其转换回来:
value2 = locale.atof(value_s[1:])
#value2 = 122445.56
value == value2 #True
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法:
dollar_dec = float(dollars[1:])
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,但这是解决您的问题的一种非常简单的方法,易于阅读:
为了:
dollars = '$5.99'
dollars = dollars.replace("$","").replace(",","")
/* 5.99 */
Run Code Online (Sandbox Code Playgroud)
它还适用于其中可能包含逗号的较大数字:
dollars = '1,425,232.99'
dollars = dollars.replace("$","").replace(",","")
/* 1425232.99 */
Run Code Online (Sandbox Code Playgroud)
如果要使用十进制:
from decimal import Decimal
dollars = Decimal(dollars.strip('$'))
Run Code Online (Sandbox Code Playgroud)
从那里添加非常简单
dollars += 1 # Would add 1 to your decimal
Run Code Online (Sandbox Code Playgroud)