I';我对python中的打印输出感到困惑

I';我对python中的打印输出感到困惑,python,Python,我认为循环应该以打印输出23.1结束,为什么要在23.0中停止?23.0仍然满足“如果guess当guess为23.0000000000000 57时,循环到达中断行,且大于23。您可能希望它是23.0,但是当guess是23.000000000000057时,循环到达break行,并且大于23。您可能期望它是23.0,但是。数字0.1和0.01实际上不存在于二进制浮点中;您使用的是最接近的近似值。数字0.1和0.01实际上不存在于二进制浮点中;您使用的是最接近的近似值。 x = 23 epsi

我认为循环应该以打印输出23.1结束,为什么要在23.0中停止?23.0仍然满足“如果guess当
guess
23.0000000000000 57
时,循环到达
中断
行,且大于
23
。您可能希望它是
23.0
,但是当
guess
23.000000000000057
时,循环到达
break
行,并且大于
23
。您可能期望它是
23.0
,但是。

数字0.1和0.01实际上不存在于二进制浮点中;您使用的是最接近的近似值。数字0.1和0.01实际上不存在于二进制浮点中;您使用的是最接近的近似值。
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))