You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套函数实现牛顿法求平方根仅输出整数结果的问题排查求助

解决牛顿法求平方根仅输出整数的问题

嘿,我看到你的问题啦!你的牛顿法求平方根程序只输出整数结果,问题其实出在**整数除法运算符//**上,咱们来一步步解决它~

问题根源

在你的ImprovingGuess嵌套函数里,你使用了Python的整数除法运算符//:

temp=number//newguess
newguess=(temp+newguess)//2.0

哪怕操作数是浮点数,//也会返回向下取整的结果,这就导致每次迭代都把计算结果强行压缩成整数方向的数值,最终只能得到整数结果,完全丢失了小数部分的精度。

修复方案

只需要把所有的//替换成普通的浮点数除法运算符/,这样就能保留计算过程中的小数精度,让牛顿法正确迭代出精确的平方根。

另外补充一个小优化:原代码里的if n == (number**.5)容易因为浮点数精度问题判断失误,改成用绝对值差小于一个极小值(比如1e-6)来判断猜测是否足够准确,会更可靠。

修改后的完整代码如下:

def mySqrt2():
    number=float(input('enter a number that you want to find its root:'))
    n=float(input('enter your Guess:'))
    def mySqrt1(number,n):
        def checkIfGood():
            def ImprovingGuess():
                newguess=n
                i=0
                while i!=100:
                    temp=number/newguess  # 替换//为/
                    newguess=(temp+newguess)/2.0  # 替换//为/
                    i+=1
                return newguess
            if abs(n - (number**.5)) < 1e-6:  # 优化浮点数相等判断逻辑
                return 'your guess is good!'
            else:
                return ImprovingGuess()
        return checkIfGood()
    return mySqrt1(number,n)
print('The result is :',mySqrt2())

测试验证

当你输入数字2、猜测值1时,修改后的程序会输出近似1.41421356237的正确结果,完全符合牛顿法的计算预期。

内容的提问来源于stack exchange,提问作者Michael ilkanayev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:32:44