Domanda

Sono backport il mio progetto da Python 2.6 a Python 2.4 e 2.5. Nel mio progetto ho usato float("inf"), e ora mi trovo non è disponibile in Python 2.5. Esiste un backport di esso?

È stato utile?

Soluzione 4

ho creato un backport, testato su Python 2.5+, probabilmente può essere fatto facilmente per lavorare su Python 2.4:

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

Altri suggerimenti

Ortografia esso sia la strada più lunga o il modo in breve funziona bene per me:

$ 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

Il flag -c significa "eseguire le seguenti argomenti come comando Python."

PEP754 (che è stata respinta) non menziona il problema su speciale valori IEEE-754. Si suggerisce di utilizzare qualcosa come 1e300000 per generare un overflow in virgola mobile e creare inf, ma lo fa notare che questa è brutta e non è garantito per essere portabile.

Si dovrebbe essere in grado di fingere da dare Python un numero sufficientemente ampio in virgola mobile costante, invece. Per esempio:

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

Il decimale modulo è disponibile dal Python 2.4 e supporta infiniti decimali positivi o negativi. Non sempre si comporta come un galleggiante (ad es. L'aggiunta di un decimale e un flottante non è supportato), ma fa la cosa giusta per il confronto, che era abbastanza buono per me.

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

Prendendo in prestito NumPy per un paio di righe:

import numpy as np

inf = float(np.inf)

Qui, inf è un regolare pitone float , in modo da don 't bisogno di perdere tempo con NumPy ulteriormente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top