python-3.x Math.ceil(x)使用while循环

6tdlim6h  于 2023-07-01  发布在  Python
关注(0)|答案(1)|浏览(106)

上一次我在学习数学模块,我不能理解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或更高的数字。

izkcnapc

izkcnapc1#

Python有issues来比较两个浮点数,因为精度/舍入的问题。Python实际上将y计算为最接近的近似值21.0,而您期望它是21。因此,它们不相等,并且y != x的条件永远不会计算为False,从而导致您正在经历的无限循环。
您可以使用math.isclose函数而不是使用相等来解决问题:

import math

x = math.ceil(20.4)
y = 20.4

while not math.isclose(x,y):
    y += 0.1
    print(y)

现在,当y“接近”21时,循环应该终止-这是我的输出:

20.5
20.6
20.700000000000003
20.800000000000004
20.900000000000006
21.000000000000007

相关问题