如何使用python将字符串'100 + 20 * 50 / 10-9'转换为浮点值

时间:2018-04-16 10:47:06

标签: python-3.x python-2.7 floating arithmetic-expressions

海伊朋友

如何将字符串表达式值转换为浮点值 例如: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`

谢谢!

2 个答案:

答案 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