Backporting flotador ( “inf”) para Python 2.4 y 2.5
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?
Solución 4
He creado un backport, probado en Python 2.5+, probablemente se puede hacer fácilmente para trabajar en Python 2.4:
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.