[英]Python Square Root doesn't work
当我运行此功能时,为什么它会无限次打印3和4。 我不明白为什么它会继续下去,而且它不应该至少最初打印5张吗?
a = 15
x = 5
while True:
print x
y = (x + a/x) / 2
if y == x:
break
x = y
您正在做整数除法。 将常量更改为
a = 15.0
x = 5.0
另外,由于数字将是float
请检查一些允许的精度,而不要尝试使用完全相等的形式。
while True:
print x
y = (x + a/x)/2
if abs(y - x) < 0.0001:
break
x = y
输出量
5
4.0
3.875
3.87298387097
我可以告诉您正在使用python 2,因此/
在这种情况下为整数除法。 为了强制进行浮点除法,有几种方法可以做到,但这可能是最简单的。
y = (x + 1.0 * a / x) / 2
我希望这个小的代码跟踪可以帮助您看到错误:
第一循环
y= (5 + (15/5) ) /2
y= (5 + 3) /2
y=4
4 !=5
x=4
第二循环
y= (4+(15/4))/2
y= (4+3)/2
y=3
3!=4
x=3
第三循环
y=(3+(15/3)) /2
y=(3+5) /2
y=8/2
y=4
4!=3
x=4
将重复...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.