2017-02-11 8 views
0

私は無限の合計を使って非常に多くの小数点以下桁にpiを計算するプログラムを書いています.22回反復すると小数点以下は15桁になります。しかし、pythonの制限のために、これは表示できる小数点以下の桁数の最大値です。ですから、この問題を解決してインターネットを見て、this websiteにpython decimalクラスの情報が含まれていることがわかりました。小数点の値を変数として格納する方法

これは私の問題の完璧な解決策のようですが、この方法を試してみると数値を追加して変数に保存することができませんでした。答えを見つけるために元のサイトに戻った後、私は変数を含むものを見つけることができませんでした。しかし、そのページは馬鹿馬鹿しくて、何かを見逃してしまったかもしれません。ここで

が、それは小数部アウトと正常に動作し、私のコードです:

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) 

EDIT: これは私が受け取っているエラーです:

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

これが最初であります私がこのクラスで働いていた時期であり、どのようにcontiuneするのかはわかりません。

+0

@StefanPochmann私の質問を更新しました –

答えて

2

小数に山車を追加することがサポートされていないのではい、これはvaluefloat)を行い、あるDecimal最初:

value = Decimal(1/2) 

エラーはエラーが発生した元の場所と言って、あなたにこれを伝えるには、明示的です、どのオペレータがそれを引き起こしたのか、どのようなタイプのものを持っているのか、

decimalのドキュメントに記載されているDecimal FAQを見てください。小数点以下を扱う場合は、Qが必要です。

+0

ありがとう、それは後天的にはとても簡単です!プログラムは意図したとおりに動作するようになりました。 –

+1

これで答えを受け入れることができます:) –

+0

@ Jean-FrançoisFabre私は行くつもりでしたが、私は10分ほど待たなければなりませんでした。 –

関連する問題