即使在使用十进制模块之后,存储bernoulli数也会在python中出现溢出错误

时间:2017-11-18 10:30:32

标签: python integer decimal integer-overflow bernoulli-numbers

我正试图在python的字典中存储前1000个bernoulli数字。起初我只是按原样存储数字。所以我遇到了溢出错误。现在经过前面的回答后,我想到了使用十进制模块。

所以这是

-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173 / 2291190

第260号bernouli号码。我能够将所有以前的内容存储在字典中。

这是我写的示例代码。

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

这是错误快照

Error image

有没有更好的方法来处理如此庞大的数字?请告诉我是否有一些事情可以存储这些数字。

1 个答案:

答案 0 :(得分:0)

在进行除法之前,您应该将大数字转换为Decimal,即:

(注意括号末尾)

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