Quel est le flotteur maximal en Python?


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.


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.


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)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.