我是一名Python初学者,想要计算圆周率。我尝试使用Chudnovsky算法,因为听说它比其他算法更快。
以下是我的代码:
由于某些原因,这段代码仅提供了15位小数的pi值,与可接受的值相比有所差异。我尝试通过增加精度值来解决此问题;这会增加数字的位数,但只有前15位是准确的。我尝试改变算法计算方式,但也没有起作用。因此,我的问题是,是否有办法使此代码更加准确,还是我必须使用另一种算法?我需要帮助,因为我不知道如何在Python中操作这么多位数。我希望能够控制程序确定和显示的(正确)数字数量 - 无论是10、100、1000等。
以下是我的代码:
from math import factorial
from decimal import Decimal, getcontext
getcontext().prec=100
def calc(n):
t= Decimal(0)
pi = Decimal(0)
deno= Decimal(0)
k = 0
for k in range(n):
t = ((-1)**k)*(factorial(6*k))*(13591409+545140134*k)
deno = factorial(3*k)*(factorial(k)**3)*(640320**(3*k))
pi += Decimal(t)/Decimal(deno)
pi = pi * Decimal(12)/Decimal(640320**(1.5))
pi = 1/pi
return pi
print calc(25)
由于某些原因,这段代码仅提供了15位小数的pi值,与可接受的值相比有所差异。我尝试通过增加精度值来解决此问题;这会增加数字的位数,但只有前15位是准确的。我尝试改变算法计算方式,但也没有起作用。因此,我的问题是,是否有办法使此代码更加准确,还是我必须使用另一种算法?我需要帮助,因为我不知道如何在Python中操作这么多位数。我希望能够控制程序确定和显示的(正确)数字数量 - 无论是10、100、1000等。