Подтвердить что ты не робот

Python: OverflowError: ошибка диапазона math

Я получаю ошибку переполнения, когда я пытаюсь выполнить этот расчет, но я не могу понять, почему.

1-math.exp(-4*1000000*-0.0641515994108)
4b9b3361

Ответ 1

Число, которое вы запрашиваете для вычисления math.exp, имеет в десятичной форме более 110 000 цифр. Это немного вне диапазона двойника, поэтому он вызывает переполнение.

Ответ 2

Чтобы исправить это, используйте:

try:
    ans = math.exp(200000)
except OverflowError:
    ans = float('inf')

Ответ 3

Я думаю, что значение становится слишком большим, чтобы вписываться в double в python, поэтому вы получаете OverflowError. Самое большое значение, которое я могу вычислить exp на моей машине в Python, просто немного больше, чем 709.78271.

Ответ 4

Это может дать вам понять, почему:

http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29

Обратите внимание на показатель 111442.

Ответ 5

Попробуйте np.exp() вместо math.exp()

Numpy обрабатывает переполнения более изящно, np.exp(999) приводит к inf и 1./(1. + np.exp(999)), следовательно, просто приводит к нулю

import math 
import numpy as np

print(1-np.exp(-4*1000000*-0.0641515994108))