给定一个正数(n),我尝试使用等式e =(1 + 1 / k)^ k,随着k的增加,发现两个连续的答案与n个有效数字相符。 例 我得到n = 1
if k=1:
e=(1+1/1)^1
e=2
and if k=2
e=(1+1/2)^2
e=2.25
这两个将同意1个有效数字,因为在一个数字上它们都等于2。这是我到目前为止已经使用过的代码,但是无论输入什么n值,为什么它一直返回2.0? / p>
import decimal
def significant (d, n):
"""Given a desired precision, express a float to this level of
precision.
>>> significant (12.345678, 4)
12.35
Params:
d (float): # of interest
n (int): precision (# significant digits)
Returns: (float) d rounded to this precision
"""
decimal.getcontext().prec = n
return float(decimal.Decimal(d) / decimal.Decimal (1))
def eApprox (n):
prev=0
k=1
e=(1+(1/k))**k
prob=significant(e,n)
while str(prob)!=prev:
prev=str(prob)[:]
k+=1
return e
答案 0 :(得分:0)
您似乎希望eApprox
返回一个取决于k
的值;就目前而言,您的函数始终将k设置为1,因此只能计算(1+(1/1))**1
。