2017-11-18 140 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}