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

10-06 12:42