2017-02-11 77 views
0

我正在編寫一個程序,該程序使用無限和來非常快速地計算pi到大量的小數位數,22次迭代得到15位小數位數。但是,由於python的限制,這是可以顯示的最大小數位數。所以試着解決這個問題,我期待在互聯網上發現this website,其中包括有關python十進制類的信息。如何將十進制值存儲爲變量

這似乎是對我的問題的完美解決方案,但是在嘗試此方法時,我無法添加數字並將它們保存到變量中。回到原始網站找到答案後,我找不到涉及變量的任何內容。但是這個頁面很長,我可能很容易漏掉一些東西。

這裏是我的代碼,它工作正常進行的小數部分:

from decimal import * 
getcontext().prec = 30 

n = 0 
value = 1/2 
while True: 
    n += 1 
    top = 1 
    bottom = 2 ** (2 * n + 1) * (2 * n + 1) * 2 
    for i in range(n): 
     top *= 2 * i + 1 
     if i != 0: bottom *= 2 * i + 2 

    value += Decimal(top)/Decimal(bottom) 
    print(value * 6) 

編輯: 這是我收到的錯誤:

TypeError: unsupported operand type(s) for +=: 'float' and 'decimal.Decimal' 

這是第一次我曾與這個班級合作過,我不確定如何保持穩定。

+0

@StefanPochmann我已經更新了我的問題 –

回答

2

是的,這是因爲添加到浮動小數點不被支持,使value(在float)一Decimal第一:

value = Decimal(1/2) 

的錯誤是在告訴你這一點,他說在那裏產生錯誤的明確,哪個運算符造成了它,以及它得到了什麼類型

請仔細看看decimal文檔中提供的Decimal FAQ,如果使用小數,您可能會感興趣的是Q.

+0

謝謝,事後看來這很簡單!該程序現在按預期工作。 –

+1

所以現在你可以接受的答案:) –

+0

@ Jean-FrançoisFabre我正要去,但我不得不等待10分鐘,我現在雖然 –

相關問題