Хранение числа Бернулли приводит к ошибке переполнения в 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}