我正在尝试使用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)
答案 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)。