Хранение числа Бернулли приводит к ошибке переполнения в python даже после использования десятичного модуля

Я пытаюсь сохранить первые 1000 чисел Бернулли в словаре на python. Сначала я просто сохранил числа как есть. Итак, я получил ошибку переполнения. Теперь, пройдя предыдущие ответы, я подумал об использовании десятичного модуля.

Так вот

-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173 / 2291190

260-й номер Бернулли. Мне удалось сохранить все предыдущие в словаре.

Это пример кода, который я написал.

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

Это ошибка снимка

Ошибка изображения

Есть ли лучший способ справиться с такими огромными числами? Пожалуйста, скажите мне, если что-то можно сделать, чтобы сохранить эти числа.

1 ответ

Вы должны преобразовать большое число в Decimal перед выполнением деления, то есть:

(Обратите внимание на конец скобок)

di = {260: d(-5218507479961513801890596392421261361036935624312258325065379143295948300812040703848766095836974598734762472300638625802884257082786883956679824964010841565051175167717451747328911935282639583972372470105587187736495055501208701522099921363239317373617854217050435670713936357978555246779460902210809009009539232173) / 2291190}
Другие вопросы по тегам