Was ist der maximale Float in Python?

172

Ich denke, die maximale Ganzzahl in Python ist durch Aufrufen verfügbar sys.maxint.

Was ist das Maximum floatoder longin Python?

Ladyfafa
quelle
sys.maxintIn Python 3 gibt es keine .
David McCorrie

Antworten:

273

Für floateinen Blick auf sys.float_info:

>>> import sys
>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2
250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsil
on=2.2204460492503131e-16, radix=2, rounds=1)

Insbesondere sys.float_info.max:

>>> sys.float_info.max
1.7976931348623157e+308

Wenn das nicht groß genug ist, gibt es immer eine positive Unendlichkeit :

>>> infinity = float("inf")
>>> infinity
inf
>>> infinity / 10000
inf

Der longTyp hat eine unbegrenzte Genauigkeit , daher denke ich, dass Sie nur durch den verfügbaren Speicher begrenzt sind.

Dave Webb
quelle
1
Eigentlich fand ich, dass die sys.maxint für meine Bewerbung völlig ausreicht
Ladyfafa
Es scheint sys.float_infoab Version 2.6 verfügbar zu sein. Wie wäre es mit v2.3-5?
Aleksei Fedotov
1
Hinweis sys.float_info.min ist definiert als "minimaler positiver normalisierter Float". Kleinere Denormalwerte sind möglich, bis zu5e-324
Bob Stein
1
Cool, beide sind sehr nützlich. inffür alle Dinge Python, und float_info.maxals Problemumgehung, wenn das frühere nicht funktioniert, ist zum Beispiel time.sleep(float("inf"))nicht erlaubt :(
Dima Tisnek
2
@ladyfafa: sys.maxint ist in Python 3 weg, siehe auch Kommentare in der anderen Antwort und stackoverflow.com/questions/13795758/…
Joachim Wagner
16

sys.maxint ist nicht die größte von Python unterstützte Ganzzahl. Es ist die größte Ganzzahl, die vom regulären Ganzzahltyp von Python unterstützt wird.

GWW
quelle
10
+1 Das ist wichtig. In Py3k ist es fast bedeutungslos - es ist der Punkt, an dem Python (transparent!) Den zugrunde liegenden Datentyp ändert long.
Katriel
6
@katrielalex: sys.maxintist nicht einmal in Python 3 definiert, sondern heißt sys.maxsize, was wahrscheinlich auch in Python 2 zu bevorzugen ist.
Scott Griffiths
14
@ Scott Griffiths: Nicht ganz. sys.maxsize(eingeführt in Python 2.6) und sys.maxintsind zwei verschiedene Dinge. Die erste gibt die maximal zulässige Anzahl von Objekten in einer Sammlung an (z. B. maximale Größe einer Liste, eines Diktats usw.) und entspricht einer signierten Version des size_tTyps C ; der zweite ist der Punkt , nach dem der intTyp Schalter auf long, und ist der höchste Wert eines C long. Auf einigen Plattformen unterscheiden sich die beiden Werte: z. B. unter 64-Bit-Windows sys.maxsizeist 2**63-1und sys.maxintist 2**31-1.
Mark Dickinson
@ Mark Dickinson: Danke für die Korrektur - ich hatte nicht bemerkt, dass sie jemals anders sein könnten (mit 64-Bit-Python auf Snow Leopard sind sie beide 2**63-1).
Scott Griffiths
7

Wenn Sie numpy verwenden , können Sie den Typ ' float128 ' verwenden und einen maximalen float von 10e + 4931 erhalten

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
Der Aelfinn
quelle