0
PythonでNilakanthaシリーズを使用してpiの桁を計算するプログラムを作成しようとしています。それが実行されるたびに、それは私に50小数を与えることはありません。まだPythonを学ぶので、どんな助けもありがたいです。Python - piの数字を計算しようとしていて、小数点以下48桁を超えることはできません。
# Program using Nilakantha Series to crunch digits of pi
from math import *
from decimal import *
getcontext().prec = 200 # this is not doing anything
# epsilon is how accurate I want to be to pi
EPSILON = 0.000000000000000000000000000000000000000000000000000001
sum = float(3)
step = 0
i = 2
while abs(pi - sum) >= EPSILON:
step += 1
print (step)
if step % 2 == 1:
sum += 4.0/(i * (i + 1) * (i + 2))
i += 2
else:
sum -= 4.0/(i * (i + 1) * (i + 2))
i += 2
print (Decimal(sum))
print (Decimal(pi))
print ("Total itterations: ", step)
print ("Accurate to: ", EPSILON)
単純な回避策は、次の桁を計算し、整数を文字列に保持して追加するだけです。 –
getcontext()は小数点以下の桁数です。 https://docs.python.org/3/library/decimal.html計算で浮動小数点数 – Mic
を使用していますが、ここでは実際には50桁の精度を計算していないことに注意してください。浮動小数点が保持できる有効数字のおよそ16桁または17桁程度の精度しか持たないmath.piで与えられた値の小数点以下50桁まで正確な数値を計算しています。 – Mic