我编写了一个Python程序,使用decimal数据类型打印小数点后的n位pi。我使用的算法是Bailey-Borwein-Plouffe formula。你知道吗
该程序最多打印1076位数字,并停止打印,无论给定的精度限制是什么。你知道吗
from decimal import *
def nthdigit(n):
final = 0
for k in range(0,n):
calc =Decimal((16**-k)*(4/(8*k+1) - 2/(8*k+4) - 1/(8*k+5) - 1/(8*k+6)))
#THE BAILEY-BORWEIN-PLOUFFE FORMULA
final = Decimal(final+calc)
print(final)
n=100000
n=n+1
getcontext().prec = n
nthdigit(n)
我想知道它是否是Decimal
数据类型中的默认设置,如果是的话,有没有办法超越精度限制??你知道吗
您没有使用十进制来执行计算。您使用的是float,然后将得到的float转换为十进制。你知道吗
您不需要显式地将所有数字转换为十进制,但在计算的最内部至少有一个数字必须是十进制。当您尝试使用十进制和非十进制进行算术运算时,Decimal类将根据需要转换其他数字。为确保不会出现浮点错误,不应将浮点和小数混合使用,仅将小数与其他小数或整数组合使用。你知道吗
这是你的程序的修复版本。你知道吗
我包装了这个输出,使它更容易阅读。所有数字都正确。你知道吗
相关问题 更多 >
编程相关推荐