>>> 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 FAQ
同样的问题也经常出现在comp.lang.python中。
我认为它是一个FAQ的原因是,因为Python在其他方面都非常完美;-),我们期望它能像我们在学校里学到的那样完美地执行算术运算。然而,任何完成过数值方法课程的人都会告诉您,浮点数离完美还有很长的路要走。
通过这个例子,我认为在Python中进行除法时出现了错误。
>>> print(int(((48/5.0)-9)*5))
2
我用简单的方法解决了这个问题
>>> print(int(round(((48/5.0)-9)*5,2)))
3