def square_root_2():
i = 0
c= 10
m_max = c
m_min = 0
g = (m_min + m_max)/2
while (abs(g*g-c) > 0.001): #精度设为为0.001
if (g*g < c):
m_min = g
else:
m_max = g
g = (m_min+m_max)/2
i = i + 1
print ("%d:%.5f" % (i,g)) #小数点后取5位
square_root_2()
运行倒是可以的,但是一直是无限循环的情况,哪里不对呢?
问题出现在这个地方:g = (m_min + m_max) / 2,m_min、m_max都为整数其和也为整数,两个整数相除,结果为整数。修改为下面即可: