Python float - str - 浮动怪异
-
21-09-2019 - |
题
>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
这里发生了什么?我如何转换 0.47000000000000003
到字符串并将结果值返回到浮点数?
我在 Windows 上使用 Python 2.5.4。
其他提示
浮子(和双)不具有无限精度。自然地,当你对它们进行操作出现舍入误差。
这是一个 Python常见问题解答
同样的问题出现了 comp.lang.python 中经常出现 还。
我认为它是一个常见问题解答的原因是因为 python 在所有其他方面都是完美的;-),我们期望它能够完美地执行算术 - 就像我们在学校教的那样。然而,任何学过数值方法课程的人都会告诉您,浮点数距离完美还有很长的路要走。
通过本实施例中 我认为这是在Python中的错误,当你把
>>> print(int(((48/5.0)-9)*5))
2
最简单的方式,通过我这
解决这个问题 >>> print(int(round(((48/5.0)-9)*5,2)))
3
不隶属于 StackOverflow