python - 我对 python while 循环中的打印感到困惑

标签 python

我认为循环应该以打印出 23.1 结束,为什么在 23.0 停止? 23.0 还是会遇到“if guess <= x”,不是吗?

我的python版本是2.7

我是新手,卡在这里,希望有人能为我解释一下,非常感谢。

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

while abs(guess**2-x) >= epsilon:
    if guess <= x:
        guess += step
        print guess
    else:
        break
if abs(guess**2 - x) >= epsilon:
    print 'failed'
else:
    print ('succeeded: ' + str(guess))

最佳答案

guess23.000000000000057 且大于 23 时,循环到达 break 行。您可能希望它是 23.0floating point numbers do not produce exact arithmetic .

关于python - 我对 python while 循环中的打印感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58321452/

相关文章:

python - 关闭 matplotlib 中所有绘图的刻度(使用 rc)

Python模拟返回值

python - Nginx、Flask、Gunicorn 502 错误

python - 如何使用预训练的神经网络处理灰度图像?

python - 根据另一列中的值查找单元格中的值

python - solve_ivp(ODE 求解器)的实现

python - 有效地生成大量有偏差的抛硬币

python - 如何减少 PIL 中的 png 图像文件大小

python - 如何将文件的输出通过管道传递给 Python 中的变量?

python - 尽管添加了正确的范围,但带有 Python 的 Google Drive API 仍不允许文件下载