Учитывая положительное число (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
Эти двое согласятся на одну значащую цифру, потому что на одной фигуре они оба равны 2. Вот код, который я работал до сих пор, но не понимаюпочему он продолжает возвращать 2.0 независимо от того, какое значение n указано в
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