上一次我在学习数学模块,我不能理解math.ceil()是如何工作的。我试着在while循环中使用它,但我不知道它是如何工作的。下面是我的小代码:
import math
x = 20.4
y = 20.4
x = math.ceil(x)
while y != x:
y += 0.1
print(y)
它就是不能停止计算,为什么呢?它甚至可以打印20152.599999987233或更高的数字。
上一次我在学习数学模块,我不能理解math.ceil()是如何工作的。我试着在while循环中使用它,但我不知道它是如何工作的。下面是我的小代码:
import math
x = 20.4
y = 20.4
x = math.ceil(x)
while y != x:
y += 0.1
print(y)
它就是不能停止计算,为什么呢?它甚至可以打印20152.599999987233或更高的数字。
1条答案
按热度按时间izkcnapc1#
Python有issues来比较两个浮点数,因为精度/舍入的问题。Python实际上将
y
计算为最接近的近似值21.0,而您期望它是21。因此,它们不相等,并且y != x
的条件永远不会计算为False
,从而导致您正在经历的无限循环。您可以使用
math.isclose
函数而不是使用相等来解决问题:现在,当
y
“接近”21时,循环应该终止-这是我的输出: