python float-str-浮点怪异

发布于 2021-01-29 15:02:05

>>> float(str(0.65000000000000002))

0.65000000000000002

>>> float(str(0.47000000000000003))

0.46999999999999997     ???

这里发生了什么?如何转换0.47000000000000003为字符串并将结果值转换为浮点数?

我在Windows上使用Python 2.5.4。

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    str(0.47000000000000003)给予'0.47'并且float('0.47')可以0.46999999999999997。这是由于表示浮点数的方式(请参阅此Wikipedia文章)

    注意:float(repr(0.47000000000000003))eval(repr(0.47000000000000003))会给您预期的结果,但如果需要精度,则应使用Decimal



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看