>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
这里发生了什么?如何转换0.47000000000000003
为字符串并将结果值转换回浮点数?
我在 Windows 上使用 Python 2.5.4。
>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
这里发生了什么?如何转换0.47000000000000003
为字符串并将结果值转换回浮点数?
我在 Windows 上使用 Python 2.5.4。
float (和 double )没有无限精度。自然,当您对它们进行操作时,会出现舍入错误。
这是一个Python 常见问题解答
同样的问题也经常出现在 comp.lang.python 中。
我认为它是一个常见问题解答的原因是因为 python 在所有其他方面都是完美的 ;-),我们希望它能够完美地执行算术 - 就像我们在学校所学的一样。然而,任何上过数值方法课程的人都会告诉你,浮点数离完美还有很长的路要走。
通过这个例子,我认为这是 Python 中的一个错误,当你定义时
>>> print(int(((48/5.0)-9)*5))
2
简单的方法,我通过这个解决了这个问题
>>> print(int(round(((48/5.0)-9)*5,2)))
3