Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何计算更长的浮动?_Python_Count_Digits_Pi - Fatal编程技术网

Python 我如何计算更长的浮动?

Python 我如何计算更长的浮动?,python,count,digits,pi,Python,Count,Digits,Pi,我正在编写Python代码,将pi计算为很多位数,但Python只允许我计算16位数。(尽管事实上12345**12345计数不成问题,但这是不公平的。)有可能更精确地计数吗?存在某个物体,巫婆能确定更多的数字吗? 代码如下: def fl(x): if x < 2: return 1 else: return x*fl(x - 1) per = int (input("Period: ")) k = 0 x = 1 while k <

我正在编写Python代码,将pi计算为很多位数,但Python只允许我计算16位数。(尽管事实上12345**12345计数不成问题,但这是不公平的。)有可能更精确地计数吗?存在某个物体,巫婆能确定更多的数字吗? 代码如下:

def fl(x):
    if x < 2:
        return 1
    else:
        return x*fl(x - 1)
per = int (input("Period: "))
k = 0
x = 1
while k < per:
    x += (fl(6*k)*(13591409 + 545140134*k))/(fl(3*k)*((fl(k))**3)*((-640320)**(k*3)))
    print(x)
    k += 1

print("pi: " + str(426880*(10005**0.5)/x))
def fl(x):
如果x<2:
返回1
其他:
返回x*fl(x-1)
per=int(输入(“期间:”)
k=0
x=1
当k
有三个提供扩展精度浮点的常用库

Decimal包含在所有最新版本的Python中。在Python3.3之前,它相对较慢,但在Python3.3中,它是用C实现的,速度要快得多。Decimal的优点是包含在所有最新版本的Python中

是一个实现扩展精度数据类型的纯Python库。mpmath的优点是使用纯Python编写

是GMP/MPIR、MPFR和MPC扩展精度库的Python包装器。对于大多数计算来说,gmpy2是最快的,但在Mac或Linux系统上安装需要额外的努力。(不过,可以使用Windows二进制文件。)


免责声明:我维护gmpy2并使用过mpmath。

@mata
Decimal
仍然有一个最大精度,OP可能也对默认情况下
print
截断数字并对数字进行科学记法感到失望。@yes,当然它有一个最大精度,没有一个浮点实现没有,但精度是可调的。尽管如此,它看起来像OP想要的是一个函数,该函数将精确计算pi的任意数字的值,给定其在值中的位置,使用不需要数字其余部分上下文的计算。他最好只是单独存储或打印每个数字或每5或10个数字,从而能够动态准确地表示任意精度,而不是尝试使用另一种精度有限的数据类型来存储整个值。