使用
Decimal
为了获得更高的精度,还设置了更高的精确度:
import decimal
def chudnovsky(n):
decimal.getcontext().prec = n + 15
C = 426880 * decimal.Decimal(10005).sqrt()
K = decimal.Decimal(13591409)
M, X = decimal.Decimal(1), decimal.Decimal(1)
L = decimal.Decimal(545140134)
S = K
for i in range(1, n):
M = (M * (12 * i - 11) * (12 * i - 7) * (12 * i - 5) * (12 * i - 1)) / (i ** 3 * 640320 ** 3)
K += L
X *= -262537412640768000
S += decimal.Decimal(M * K) / X
pi = C / S
return pi
n = 5
calculated_pi = chudnovsky(n)
print(f"Pi to {n} decimal places: {str(calculated_pi)[:n + 15]}")
打印
圆周率至小数点后5位:3.141592653589734207