>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
这里发生了什么?
如何将
0.47000000000000003
转换为字符串并将结果值转换为float?我在Windows上使用Python 2.5.4。
最佳答案
str(0.47000000000000003)
给出'0.47'
,而float('0.47')
可以是0.46999999999999997
。
这是由于表示浮点数的方式(请参阅此wikipedia文章)
注意:float(repr(0.47000000000000003))
或eval(repr(0.47000000000000003))
将为您提供预期的结果,但如果需要精度,则应使用Decimal。