Wie tippe ich ein Gleitkomma-Unendlichkeitsliteral in Python?
ich habe gehört
inf = float('inf')
ist nicht tragbar. Daher habe ich folgendes empfohlen:
inf = 1e400
Ist einer dieser Standard oder tragbar? Was ist die beste Vorgehensweise?
Antworten:
In Python 2.6 ist es portabel, wenn die CPU es unterstützt
Die Funktion float () verwandelt nun den String nan in einen IEEE 754 Not A Number-Wert und + inf und -inf in eine positive oder negative Unendlichkeit. Dies funktioniert auf jeder Plattform mit IEEE 754-Semantik.
float('inf')ist nicht portierbar wie in nicht portierbar zurück zu Python 2.5, wenn die String-Ausgabe zwischen den Plattformen variiert. Ab 2.6 float('inf')funktioniert es garantiert auf IEEE-754-Compliance-Plattformen (siehe: http://www.python.org/dev/peps/pep-0754/ ).
(Und die Empfehlung scheint im Bereich von 1e30000 zu liegen, nicht nur von 1e400.)
Vielleicht könnten Sie so etwas tun
try:
inf = float('inf')
except: # check for a particular exception here?
inf = 1e30000
float('inf')ist definitiv im Allgemeinen zu bevorzugen. Es ist sogar möglich, dass 'inf = 1e30000` OverflowErrorin einer zukünftigen Version von Python anfängt zu erhöhen, anstatt eine Unendlichkeit zu erzeugen.
float('inf')sollteValueErrorauf diesen Plattformen angehoben werden, aber meines Wissens wurde dieses Verhalten nie getestet, da Python (zumindest neuere Versionen von Python) eine solche Plattform noch nicht erfüllt hat. In der Praxis mach dir keine Sorgen.