2017-11-18 245 views
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。你需要將你的術語轉換爲十進制_before_你對它們進行算術運算。作爲替代方案,您可以使用'fractions'模塊,並將Bernoulli數字存儲爲有理數 –

+0

Ohh ..好吧,實際上我所做的是我使用matlab來生成所有這些數字。 Matlab只能以分數格式生成。所以我必須這樣做 – bharath

+0

順便說一句,你不能在Python中得到整數溢出,因爲Python整數會根據需要增長。錯誤消息指出,您正在獲取_float_溢出。 –

回答

0

你應該做的劃分,即:

(注意括號結束)

di = {260: d(-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173)/2291190}