2010-10-29 17 views
18

me sale un error de desbordamiento cuando intento este cálculo, pero no puedo entender por qué.Python: OverflowError: matemáticas error de rango

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

Se trata de tomar siempre para calcular el math.exp de su expresión en Linux 'calc' - en realidad alrededor de 3 minutos en mi PC. La salida no cabe en la pantalla, pero aquí está la última parte de ella: 72601064848030549330052235283692208900018564830019400961030549300613573049038658490326003709885716700599883485335384987825755170505520081515667880006364976728119694600659746416440802282624919298297947165561974790549306225384099033699937030324423057761382164874383992786304290520859618809208146480637711575173287535774531529104427355177803053295844887694582338200906830029698966101673406039727344889895537434766431106 – kovshenin

Respuesta

18

El número que está pidiendo que math.exp calcule tiene, en decimal, más de 110,000 dígitos. Eso está ligeramente fuera del rango de un doble, por lo que causa un desbordamiento.

+7

¿Existe una solución? –

3

Esto le puede dar una idea de por qué:

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

Aviso al 111442 exponente.

3

Creo que el valor es demasiado grande para caber en un double en python por lo que obtienes el OverflowError. El valor más grande que puedo calcular exp en mi máquina en Python es apenas mayor que 709.78271.

11

Para solucionarlo utilizar:

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