Python 3.x python中的平方根不精确
为什么小数点显示的平方根不准确?它必须完全为零Python 3.x python中的平方根不精确,python-3.x,Python 3.x,为什么小数点显示的平方根不准确?它必须完全为零 print('Enter your input:') n = input() def squareroot(n): i = 0.01 while i*i < float(n): i += 0.01 return i print (squareroot(n)) 您的算法相当于“将i重复增加0.01,直到i*i大于n”。如果x是真正的平方根,这将返回一个介于x和
print('Enter your input:')
n = input()
def squareroot(n):
i = 0.01
while i*i < float(n):
i += 0.01
return i
print (squareroot(n))
您的算法相当于“将i
重复增加0.01,直到i*i
大于n
”。如果x
是真正的平方根,这将返回一个介于x
和x+.01
之间的数字,这正是您所看到的。如果你想要一个更准确的答案,选择一个较小的增量或者(更好的)使用一个更好的算法,比如
或或者,如果这不是家庭作业,只需使用math.sqrt
您的算法相当于“将i
重复增加0.01,直到i*i
大于n
”。如果x
是真正的平方根,这将返回一个介于x
和x+.01
之间的数字,这正是您所看到的。如果你想要一个更准确的答案,选择一个较小的增量或者(更好的)使用一个更好的算法,比如
或或者,如果这不是家庭作业,只需使用
math.sqrt
这是因为二进制浮点数的值在不是2的幂时是近似值
标准binary64
格式中表示的0.1
实际上是十进制的0.1000000000000005555115123125782702118158340451015625
。有关详细说明,请参见
为了避免二进制浮点数的继承不准确,您可以使用十进制
模块,或者在您的情况下,只需将i
增加一个2的幂,例如0.0078125
,即2**-7
def squareroot(n):
i = 0.0078125
while i * i < float(n):
i += 0.0078125
return i
这是因为二进制浮点数的值在不是2的幂时是近似的 标准
binary64
格式中表示的0.1
实际上是十进制的0.1000000000000005555115123125782702118158340451015625
。有关详细说明,请参见
为了避免二进制浮点数的继承不准确,您可以使用十进制
模块,或者在您的情况下,只需将i
增加一个2的幂,例如0.0078125
,即2**-7
def squareroot(n):
i = 0.0078125
while i * i < float(n):
i += 0.0078125
return i
可能的重复可能的重复
Enter your input:
25
5.0