Python - 尝试计算pi的数字,并且不能超过小数点后的48位数

时间:2017-07-03 16:27:43

标签: python decimal precision pi

我正在尝试使用python中的Nilakantha系列编写一个程序来计算pi的数字。每次运行虽然它不会给我超过50小数。仍在学习python,所以任何帮助都表示赞赏。

# 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)

1 个答案:

答案 0 :(得分:1)

您没有使用Decimal类来计算Pi,而是使用float类。 Client.data.map(&:string).sort_by(&:to_s).reject(&:blank?) 影响十进制,而不是浮动。

如果要使用Decimal,请修改代码以在循环之前转换为Decimal 。请注意,AFAIK,Pi的值在Python中不可用作小数,因此您需要从其他地方获取值(http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html)。