0

pythonで最初の1000個のbernoulli番号を辞書に格納しようとしています。最初は、そのまま数字を保存しました。だから私はオーバーフローエラーが発生しました。さて、私は以前の答えを調べた後、小数点モジュールを使うことを考えました。bernoulli番号を格納すると、小数点モジュールを使用した後でもPythonでオーバーフローエラーが発生しています

だからここでは

-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173/2291190 

260番目ベルヌーイ数です。以前のものをすべて辞書に保存することができました。

これは私が書いたサンプルコードです。

from decimal import * 
d = Decimal 
getcontext().prec = 10000 
di = {260: d(-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173/2291190)} 

これは、エラーは

Error image

ショットスナップされるが、このような膨大な数を処理するための任意のより良い方法はありますか?これらの番号を保管するためにできることがあるかどうか教えてください。

+1

あなたは適切に 'decimal'モジュールを使用していません。あなたの用語をDecimal_に変換する必要があります。代わりに 'fractions'モジュールを使い、ベルヌーイの数値を有理数として保存することができます。 –

+0

Ohh ..実際に私が行ったことは、これらの数値を生成するためにmatlabを使ったことです。 Matlabは分数形式でのみ生成します。ですから、私はそのようにしなければなりません – bharath

+0

ところで、Pythonの整数は必要に応じて大きくなるので、整数オーバーフローをPythonで得ることはできません。そのエラーメッセージには、_float_オーバーフローが発生しています。 –

答えて

0

あなたはすなわち、除算を行う前にDecimalに大量に変換する必要があります。:

(括弧の終わりに注意してください)

di = {260: d(-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173)/2291190} 
関連する問題