问题描述
x = 25
epsilon = 0.01
numGuesses = 0
ans = 0.0
while abs(ans**2 - x) >= epsilon and ans <= x:
ans += 0.00001
numGuesses += 1
print 'numGuesses =',numGuesses
if abs(ans**2 - x) >= epsilon:
print 'Failed on square root of',x
else:
print ans,'is close to square root of',x
解决方法
我不太确定这是Python问题,而不仅仅是数学问题。
Epsilon是您给出的公差。否则您的数字可能会非常小,但仍不能为零,这实际上是数字噪声 基本上在数学上是正确的,可以将差异与某些容差进行比较,而不是直接与数字进行比较,例如由于上述原因导致值** 2 == x