簡體   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