Pregunta

Estoy backporting mi proyecto de Python 2.6 a Python 2.4 y 2.5. En mi proyecto utilicé float("inf"), y ahora parece que no está disponible en Python 2.5. ¿Hay un backport de ella?

¿Fue útil?

Solución 4

He creado un backport, probado en Python 2.5+, probablemente se puede hacer fácilmente para trabajar en Python 2.4:

https://github.com/ cool-RR / garlicSim / blob / master / garlicsim / garlicsim / general_misc / infinity.py

Otros consejos

Spelling que sea el camino más largo o corto el camino me da buenos resultados:

$ python2.4 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('infinity')+200"
inf
$ python2.4 -c "print float('infinity')+200"
inf

La bandera -c significa "ejecutar los siguientes argumentos como un comando Python."

PEP754 (que fue rechazada) menciona su problema acerca especial Los valores IEEE-754. Se sugiere el uso de algo así como 1e300000 para generar un desbordamiento de punto flotante y crear inf, pero sí en cuenta que este es feo y no está garantizada para ser portátil.

Usted debe ser capaz de fingir por dar un pitón de coma flotante suficientemente grande constante en su lugar. Por ejemplo:

>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True

El decimal módulo está disponible desde Python 2.4 y soporta infinitos decimales positivos o negativos. No siempre se comporta como un flotador (por ejemplo. La adición de un decimal y no es compatible con un flotador), pero hace lo correcto para la comparación, que era lo suficientemente bueno para mí.

>>> decimal.Decimal('Infinity') > 1e300
True

El préstamo de NumPy de unas pocas líneas:

import numpy as np

inf = float(np.inf)

A continuación, inf es un regulares pitón float , por lo que don 't necesidad de molestarse con NumPy más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top