gpt4 book ai didi

python - Python 的 If else 逻辑中的困惑

转载 作者:行者123 更新时间:2023-11-30 23:09:51 24 4
gpt4 key购买 nike

今年夏天我正在从 MITx 在线学习 python:6.00.1x。这是代码

x = 23.0
epsilon = 0.01
step = 0.1
guess = 0.0

while abs(guess**2-x) >= epsilon:
if guess <= x:
guess += step
else:
break

if abs(guess**2 - x) >= epsilon:
print "outside"
print guess
else:
print 'succeeded: ' + str(guess)

根据我的说法,当guess的值变成23.1时,while循环应该中断。因为当guess=23时,if条件guess<=23将满足,并且下一行guess+=step应该执行,这将使guess=23.1,然后在下一次迭代中,guess<=23.0将不被满足并且循环会破裂。但是当我运行代码时,输​​出是

外面

23.0

不应该是23.1吗?

最佳答案

因为像0.1这样的 float 无法用float类型精确表示。所以 float 运算也不精确。例如:

>>> 0.1 * 3
0.30000000000000004

在您的情况下,在猜测达到23.0之前,您会假设它是22.9,但它实际上是一个非常接近的数字>22.9,在这种情况下,可能会小一点。

关于python - Python 的 If else 逻辑中的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com