Python: cómo determinar los números más grandes / más pequeños de int / long / float / complex que mi sistema puede manejar

Especificaciones: Python 3.3.1

Lo que estaba tratando de hacer: “Al usar Python, determine los ints, longs, flotantes y números complejos más grandes y más pequeños que su sistema puede manejar”.

Lo que hice: revisé los módulos matemáticos de Python y todas las funciones integradas relacionadas con las matemáticas y los números, pero no pude encontrar la manera de hacerlo. También probé algo como max(range(0,)) pero devolvió ValueError: max() arg is an empty sequence error de ValueError: max() arg is an empty sequence .

Pregunta: ¿Cómo determinar los números más grandes / más pequeños de int / long / float / complex que mi sistema puede manejar usando Python? Como principiante total, sé que debo haberme perdido algo, pero lo intenté y no pude resolverlo. ¡Aprecio tu ayuda!

Las limitaciones numéricas de python, como las hay, están disponibles en el módulo sys :

  • sys.float_info es una tupla nombrada con limitaciones de punto flotante para su plataforma. Los números de punto flotante consisten en un exponente y una precisión; tendrías que ser más precisos sobre lo que quieres decir con el número más grande aquí; el número con el mayor exponente y la precisión total en uso es sys.float_info.max .

  • sys.int_info ; No hay tantas limitaciones como el detalle de implementación; debería ser capaz de estimar el mayor entero posible a partir de esto. Los enteros de Python solo están limitados por la memoria disponible.

  • sys.maxsize ; El tamaño y el límite de palabras de la plataforma para listas, tuplas y me gusta.

Entonces, para los enteros, básicamente hay un límite suave para los valores máximo y mínimo. Depende de cuánta memoria pueda usar su proceso y de cuánta memoria esté usando su proceso para otras cosas.

En Python 3, ya no hay un tipo long separado, pero en Python 2, sys.maxsize + 1 tendría que ser un long , como lo haría -sys.maxsize - 2 . Entre esos dos extremos se encuentra el rango de posibles enteros ‘cortos’.

Para números complejos, ordenar es un poco más … complejo de todos modos. Los números complejos tienen un componente real e imaginario, ambos son flotadores. ¿Adivina qué? Estos son flotadores de python y ya tienes su información de límite arriba:

 >>> type(1j)  >>> type(1j.real)  >>> type(1j.imag)  

sys.float_info proporciona la información deseada para los valores de punto flotante.

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

Python 3 no tiene límites superiores ni inferiores para los enteros, y no existe una definición matemática para ordenar números complejos arbitrarios (aunque las partes reales o imaginarias de dos números complejos pueden ordenarse por separado).