如何生成用户定义的小数位“ e”的近似值

时间:2018-10-09 16:02:58

标签: python

我正在尝试编写一个Python程序,该程序将使用泰勒级数生成e的近似值,以用户定义的长度(例如100个小数位)并打印所有100位数字。但是,输出永远不会超过15个小数位,这是python对于numpy.e的默认精度。我该如何解决?下面是我正在使用的代码。

import math

precision = int(input("Number of decimal places = "))
e = 0
s = 1
i = 1
while s > (10**(-1*precision)):
    e = e + s
    s = 1/math.factorial(i)   # e = 1 + 1/1! + 1/2! + 1/3! + ...
    i = i + 1
print(e)

1 个答案:

答案 0 :(得分:1)

我认为您可以使用sympy和mpmath。

首先根据泰勒级数在x = 0处的误差并求值为1来找出我们需要的项数。

1/n! e^1 < 1e-100

取n = 75就足够了。尽管我们只能使用100,这也足够好了。

在sympy中,我们在0处创建泰勒级数e ^ x,然后在1处求值

import sympy, mpmath

f = 0
for i in range(0, 100):
    f += 1/sympy.factorial(i)

mpmath.mp.dps = 100

print(mpmath.mpf(f))

为我提供

的值
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427