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