除法运算产生的结果与 Python 中的最后一位十进制数字不同,与常规计算的结果不同

问题描述

我正在尝试在 python 中执行除法运算, (3000/365)*365 打印 3000.0000000000005。而实际上这应该返回 3000?

有人能帮我理解我在这里遗漏了什么吗?

解决方法

编程语言存在浮点运算错误。有时会导致此类问题。

https://docs.python.org/3/tutorial/floatingpoint.html

Is floating point math broken?

,

如上所述,这是因为使用浮点时的精度。

解决方案是将结果四舍五入:

(round(3000/365*365,2)

如果你不想要一个浮点数,你可以使用 int

int((round(3000/365*365,2))

不确定是否有其他方法,但希望这会有所帮助。