Quel est le flotteur maximal en Python?

172

Je pense que l'entier maximum en python est disponible en appelant sys.maxint.

Quel est le maximum floatou longen Python?

ladyfafa
la source
Il n'y a pas sys.maxintde Python 3.
David McCorrie

Réponses:

273

Pour floatjeter un œil à 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)

Plus précisément, sys.float_info.max:

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

Si ce n'est pas assez grand, il y a toujours l' infini positif :

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

Le longtype a une précision illimitée , donc je pense que vous n'êtes limité que par la mémoire disponible.

Dave Webb
la source
1
en fait, j'ai trouvé que sys.maxint suffisait amplement à mon application
ladyfafa
Il semble qu'il sys.float_infosoit disponible à partir de la v2.6. Et la v2.3-5?
Aleksei Fedotov
1
Remarque sys.float_info.min est défini comme " flottant normalisé positif minimum ". Des valeurs dénormales plus petites sont possibles, jusqu'à5e-324
Bob Stein
1
Cool, les deux sont très utiles. infpour tout ce qui concerne python, et float_info.maxcomme solution de contournement lorsque le précédent ne fonctionne pas, par exemple time.sleep(float("inf"))n'est pas autorisé :(
Dima Tisnek
2
@ladyfafa: sys.maxint est parti dans Python 3, voir aussi les commentaires dans l'autre réponse et stackoverflow.com/questions/13795758/...
Joachim Wagner
16

sys.maxint n'est pas le plus grand entier pris en charge par python. C'est le plus grand entier pris en charge par le type entier régulier de python.

GWW
la source
10
+1 C'est important. Dans Py3k, cela n'a presque aucun sens - c'est le moment où Python change (de manière transparente!) Le type de données sous-jacent en long.
Katriel
6
@katrielalex: sys.maxintn'est même pas défini dans Python 3, il est appelé sys.maxsize, ce qui est probablement préférable dans Python 2 également.
Scott Griffiths
14
@Scott Griffiths: Pas tout à fait. sys.maxsize(introduit dans Python 2.6) et sys.maxintsont deux choses différentes. Le premier donne le nombre maximum d'objets autorisés dans une collection (par exemple, taille maximum d'une liste, dict, etc.), et correspond à une version signée de size_ttype C ; le second est le point , après quoi le intgenre passe à long, et est la valeur maximale de C long. Sur certaines plates-formes, les deux valeurs sont différentes: par exemple, sous Windows 64 bits, sys.maxsizeest 2**63-1et sys.maxintest 2**31-1.
Mark Dickinson
@Mark Dickinson: Merci pour la correction - je n'avais pas réalisé qu'ils pourraient être différents (avec Python 64 bits sur Snow Leopard, ils sont tous les deux 2**63-1).
Scott Griffiths
7

Si vous utilisez numpy , vous pouvez utiliser dtype ' float128 ' et obtenir un float maximum de 10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
L'Aelfinn
la source