¿Cuál es el flotador máximo en Python?

172

Creo que el número entero máximo en python está disponible llamando sys.maxint.

¿Cuál es el máximo floato longen Python?

ladyfafa
fuente
No hay sys.maxinten Python 3.
David McCorrie

Respuestas:

273

Para floatechar un vistazo a 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)

Específicamente sys.float_info.max:

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

Si eso no es lo suficientemente grande, siempre hay infinito positivo :

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

El longtipo tiene una precisión ilimitada , por lo que creo que solo está limitado por la memoria disponible.

Dave Webb
fuente
1
en realidad, encontré que sys.maxint es suficiente para mi aplicación
ladyfafa
Parece que sys.float_infoestá disponible a partir de v2.6. ¿Qué tal v2.3-5?
Aleksei Fedotov
1
Nota sys.float_info.min se define como " flotante normalizado positivo mínimo ". Son posibles valores denormales más pequeños , hasta5e-324
Bob Stein
1
Genial, ambos son muy útiles. infpara todo lo relacionado con python, y float_info.maxcomo solución alternativa cuando lo anterior no funciona, por ejemplo, time.sleep(float("inf"))no está permitido :(
Dima Tisnek
2
@ladyfafa: sys.maxint desapareció en Python 3, vea también los comentarios en la otra respuesta y stackoverflow.com/questions/13795758/…
Joachim Wagner
16

sys.maxint no es el número entero más grande compatible con python. Es el número entero más grande soportado por el tipo entero regular de python.

GWW
fuente
10
+1 Esto es importante. En Py3k, casi no tiene sentido: es el punto en el que Python (¡transparente!) Cambia el tipo de datos subyacente a long.
Katriel
66
@katrielalex: sys.maxintni siquiera se define en Python 3, se llama sys.maxsize, lo que probablemente también sea preferible en Python 2.
Scott Griffiths
14
@Scott Griffiths: No del todo. sys.maxsize(introducido en Python 2.6) y sys.maxintson dos cosas diferentes. El primero da el número máximo de objetos permitidos en una colección (por ejemplo, el tamaño máximo de una lista, dict, etc.), y corresponde a una versión firmada del size_ttipo C ; el segundo es el punto después del cual el inttipo cambia a long, y es el valor máximo de una C long. En algunas plataformas, los dos valores son diferentes: por ejemplo, en Windows de 64 bits, sys.maxsizees 2**63-1y sys.maxintes 2**31-1.
Mark Dickinson
@ Mark Dickinson: Gracias por la corrección, no me había dado cuenta de que alguna vez podrían ser diferentes (con Python de 64 bits en Snow Leopard, ambos son 2**63-1).
Scott Griffiths
7

Si está usando numpy , puede usar dtype ' float128 ' y obtener un flotador máximo de 10e + 4931

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