Frage

Ich bin Zurückportieren meines Projektes von Python 2.6 zu Python 2.4 und 2.5. In meinem Projekt habe ich float("inf"), und jetzt finde ich es auf Python 2.5 nicht verfügbar ist. Gibt es eine Rückportierung davon?

War es hilfreich?

Lösung 4

ich einen Backport erstellt, getestet auf Python 2.5 +, wahrscheinlich leicht zu Arbeit auf Python gemacht werden kann 2.4:

https://github.com/ cool-RR / garlicSim / Blob / Master / garlicsim / garlicsim / general_misc / infinity.py

Andere Tipps

es Rechtschreibung entweder den langen Weg oder den kurzen Weg funktioniert gut für mich:

$ 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

Die -c Markierungsmittel "execute die folgenden Argumente als Python-Befehl."

PEP754 (die abgelehnt wurde) nicht erwähnt Ihre Frage über spezielle IEEE-754-Werte. Er schlägt vor, so etwas wie 1e300000 mit einem Gleitkomma-Überlauf zu erzeugen und inf zu schaffen, aber es hat zur Kenntnis, dass dieser hässlichen und nicht tragbar sein garantiert.

Sie sollten es zu fälschen bis der Lage sein, durch Python anstatt einen ausreichend großen Gleitkommakonstante geben. Zum Beispiel:

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

Die dezimal Modul verfügbar ist, da Python 2.4 und unterstützt positive oder negative unendliche Dezimalzahlen. Es muss nicht immer verhält sich wie ein Schwimmer (z. B. eine Dezimalzahl hinzugefügt und ein Schwimmer wird nicht unterstützt), aber das Richtige tut zum Vergleich, was für mich gut genug war.

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

Ausleihe NumPy für ein paar Zeilen:

import numpy as np

inf = float(np.inf)

Hier ist inf ein regelmäßiger Python float , so dass Sie don ‚t Notwendigkeit, mit NumPy weiter zu stören.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top