<p>它更像是一道数学题而不是python,只需插入</p>
<pre><code>print(middle,middle**2>x)
</code></pre>
<p>用于调试目的。你知道吗</p>
<pre><code>class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
if x==1:
return 1
lowest=0.0
uppest=x*1.0
count=1
middle=(lowest+uppest)*0.5
while (abs(middle*middle-x)>0.0001) and (count<=10000):
if middle*middle>x:
uppest=middle
else:
lowest=middle
middle=(lowest+uppest)*0.5
count=count+1
print(middle,middle**2>x)
return int(middle)
sol=Solution()
print(sol.mySqrt(9))
</code></pre>
<p>输出</p>
<pre><code>2.25 False
3.375 True
2.8125 False
3.09375 True
2.953125 False
3.0234375 True
2.98828125 False
3.005859375 True
2.9970703125 False
3.00146484375 True
2.999267578125 False
3.0003662109375 True
2.99981689453125 False
3.000091552734375 True
2.9999542236328125 False
3.0000228881835938 True
2.999988555908203 False
2
</code></pre>
<p>你已经知道原因了。你知道吗</p>
<p>我也想知道为什么你不能用</p>
<pre><code>round(middle)
</code></pre>