0

사전에 1000 개의 bernoulli 숫자를 파이썬으로 저장하려고합니다. 처음에는 숫자를 그대로 저장했습니다. 그래서 오버플로 오류가 발생했습니다. 이제 이전 답변을 살펴본 후 십진수 모듈을 사용할 생각을했습니다.bernoulli 번호를 저장하면 십진수 모듈을 사용한 후에도 파이썬에서 오버플로 오류가 발생합니다.

그래서 여기가

-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173/2291190 

260 번째 bernouli 번호입니다. 이전의 모든 것들을 사전에 저장할 수있었습니다.

이것은 작성한 샘플 코드입니다.

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

는 오류가

Error image

같은 거대한 수를 처리하는 더 좋은 방법이 있나요

촬영 스냅입니까? 이 숫자를 저장하기 위해 할 수있는 일이 있는지 말해주십시오.

+1

을하기 전에 Decimal에 많은 수의 변환해야합니다. 당신은 산술 연산을하기 전에 용어를 Decimal _로 변환해야합니다. 대안으로, 당신은'fractions' 모듈을 사용할 수 있고 베르누이 수를 유리수로 저장합니다 –

+0

오 .. 그래요. 실제로 제가 한 것은 matlab을 사용하여이 모든 수를 생성하는 것입니다. Matlab은 분수 형식으로 만 생성합니다. 그래서 나는 이렇게 할 필요가 있습니다. – bharath

+0

BTW, 파이썬 정수가 필요에 따라 커지기 때문에 파이썬에서 정수 오버플로를 얻을 수 없습니다. 오류 메시지가 표시되면서 _float_ overflow가 발생합니다. –

답변

0

당신은 분할, 즉 :

(브래킷의 끝을 참고) 당신은 제대로`decimal` 모듈을 사용하지 않는

di = {260: d(-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173)/2291190} 
관련 문제