带有while循环的eApprox

时间:2018-10-16 17:11:00

标签: python while-loop

给定一个正数(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

1 个答案:

答案 0 :(得分:0)

您似乎希望eApprox返回一个取决于k的值;就目前而言,您的函数始终将k设置为1,因此只能计算(1+(1/1))**1