繁体   English   中英

Python中的百万位小数

[英]Million decimal places in Python

我们最近研究了微积分中的无限级数,也就是说,我对此非常有兴趣。 我在python中派生了自己的反tan反无限系列,并将其设置为1以获得pi / 4 * 4以获得pi。 我知道这不是最快的算法,所以请不要讨论我的算法。 我想讨论的是如何在python中表示非常小的数字。 我注意到的是,当我的程序迭代该系列时,它停止在小数点后20位(给定或采取)的某个位置。 我尝试使用十进制模块,但只推到509。我想要一个无限(几乎)的表示形式。

有办法做这种事吗? 我认为没有任何一种数据类型能够处理这种庞大的问题,但是如果您能给我一个解决方法,我将非常感谢。

Python的十进制模块要求您指定“上下文”,这会影响表示的精确度。

对于这种类型的东西,我可能会建议使用gmpy2-您可以对有理数(任意精度)进行计算,并在最后一步转换为十进制。

这是一个示例-根据需要替换您自己的算法:

import gmpy2
# See https://gmpy2.readthedocs.org/en/latest/mpfr.html
gmpy2.get_context().precision = 10000
pi = 0
for n in range(1000000):
    # Formula from http://en.wikipedia.org/wiki/Calculating_pi#Arctangent
    numer = pow(2, n + 1)
    denom = gmpy2.bincoef(n + n, n) * (n + n + 1)
    frac = gmpy2.mpq(numer, denom)
    pi += frac
    # Print every 1000 iterations
    if n % 1000 == 0:
        print(gmpy2.mpfr(pi))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM