I';我对python中的打印输出感到困惑
我认为循环应该以打印输出23.1结束,为什么要在23.0中停止?23.0仍然满足“如果guess当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
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))