我有django / python项目,用户输入负值作为字符串。但是当我尝试将字符串转换为浮点数时,我得到一个错误。
我知道我没有使用连字符或负号,但无法弄清楚如何用负号替换短划线。
import os, sys
from moneyed import Money
from moneyed.localization import format_money
moneystring = str('-$180.00')
print Money(float(moneystring.strip("$").replace(',', '')), 'USD')
回溯(最近一次调用最后一次):文件“./moneytest.py”,第31行,打印Money(float(moneystring.strip(“$”)。replace(',','')),'USD') ValueError:无法将字符串转换为float: - $ 180.00
发布于 2019-06-26 09:29:14
您应该使用.replace(..)
或其他可以删除字符的东西来移除美元,例如:
moneystring = '-$180.00'
print Money(float(moneystring.replace('$', '').replace(',', '')), 'USD')
这是必要的,因为.strip(..)
删除前导和尾随字符。但对于字符串'-$180.00'
,$
是不是一个前导或尾随字符。
话虽如此,我强烈建议你不要使用float(..)
,因为它是精确的。Money
内部使用小数。所以你更好地处理这个:
from moneyed import Money, USD
moneystring = '-$180.00'
print Money(moneystring.replace('$', '').replace(',', '')), USD)
https://stackoverflow.com/questions/-100007052
复制相似问题