Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,while循环如何仅比较3个小数点以停止执行_Python_Loops_While Loop_Decimal - Fatal编程技术网

在python中,while循环如何仅比较3个小数点以停止执行

在python中,while循环如何仅比较3个小数点以停止执行,python,loops,while-loop,decimal,Python,Loops,While Loop,Decimal,python是编程的新手,我想让这个while循环在值相等时停止执行,但仅限于3个小数点。谢谢你的帮助 def newtonSqrt(n): approx = 0.5 * n better = 0.5 * (approx + n/approx) count = 0 while better != approx: approx = better better = 0.5 * (approx + n/approx) co

python是编程的新手,我想让这个while循环在值相等时停止执行,但仅限于3个小数点。谢谢你的帮助

def newtonSqrt(n):
    approx = 0.5 * n
    better = 0.5 * (approx + n/approx)
    count = 0
    while better != approx:
        approx = better
        better = 0.5 * (approx + n/approx)
        count = 1 + count
    return (approx, count)

print(newtonSqrt(10))
将值设置为小数点后3位(他们在该链接中设置了2位,但您可以改为设置3位),然后进行比较。e、 g:

while round(better, 3) != round(approx, 3):

由于二进制表示错误,不应直接比较浮点值是否相等。四舍五入可能有效,但看起来有点粗糙

相反,使用类似于
的方法,例如将abs(更好的近似值)
设置为
0.001