海伊朋友
如何将字符串表达式值转换为浮点值
例如:s1 = '100+20*50/10-9'
此s1
转换为float
值。根据算术运算符优先级规则,它应该给出191.但是字符串表达式不会转换为float。
我使用了float('100+20*50/10-9')
并引发了错误:
Traceback(最近一次调用最后一次):文件“”,第1行,in ValueError:无法将字符串转换为float:'100 + 20 * 50 / 10-9`
谢谢!
答案 0 :(得分:3)
如果您尝试将计算字符串解析为值,则必须首先计算字符串。像这样:
eval('100+20*50/10-9')
然后你可以把它转换成像float(eval('100+20*50/10-9'))
这样的浮点数。
但是,如果计算字符串看起来像这个101+20*50/3
,从而返回434,3333(3)
,那么你应该考虑一个更好的解决方案,在之前将值解析为浮点数做计算。看到差异:
print float(eval('101+20*50/3')) '434.0
print float(eval('101.0+20.0*50.0/3.0')) '434.333333333
答案 1 :(得分:0)
还使用其他方法:
s = '101+20*50/3'
print("{:.8f}".format(eval(s)))
#ouput:
434.00000000