Valor máximo para entero largo

¿Cómo puedo asignar el valor máximo para un entero largo a una variable, similar, por ejemplo, a LONG_MAX C ++?

Enteros largos:

No hay un límite definido explícitamente. La cantidad de espacio de direcciones disponible constituye un límite práctico.
(Tomado de este sitio). Consulte la documentación en Tipos numéricos, donde verá que los Long integers have unlimited precision . En Python 2, los enteros cambiarán automáticamente a largos cuando crezcan más allá de su límite:

 >>> import sys >>> type(sys.maxsize)  >>> type(sys.maxsize+1)  

para enteros tenemos

maxint y maxsize:

El valor máximo de un int se puede encontrar en Python 2.x con sys.maxint . Se eliminó en Python 3, pero en su sys.maxsize se puede usar sys.maxsize . Desde el registro de cambios :

Se eliminó la constante sys.maxint, ya que ya no hay un límite para el valor de los enteros. Sin embargo, sys.maxsize puede usarse como un entero más grande que cualquier índice práctico de cadena o lista. Se ajusta al tamaño de entero “natural” de la implementación y suele ser el mismo que sys.maxint en versiones anteriores en la misma plataforma (asumiendo las mismas opciones de comstackción).

y, para cualquier persona interesada en la diferencia (Python 2.x):

sys.maxint El entero positivo más grande admitido por el tipo de entero regular de Python. Esto es al menos 2 ** 31-1. El mayor entero negativo es -maxint-1: la asimetría resulta del uso de la aritmética binaria de complemento a 2.

sys.maxsize El mayor entero positivo admitido por el tipo Py_ssize_t de la plataforma y, por lo tanto, el tamaño máximo que pueden tener las listas, las cadenas, los dicts y muchos otros contenedores.

y para completar, aquí está la versión de Python 3 :

sys.maxsize Un entero que puede tomar el valor máximo que una variable de tipo Py_ssize_t puede tomar. Por lo general, es 2 ^ 31 – 1 en una plataforma de 32 bits y 2 ^ 63 – 1 en una plataforma de 64 bits.

carrozas

Hay float("inf") y float("-inf") . Estos pueden ser comparados con otros tipos numéricos:

 >>> import sys >>> float("inf") > sys.maxsize True 

Python long puede ser arbitrariamente grande. Si necesitas un valor que sea mayor que cualquier otro valor, puedes usar float('inf') , ya que Python no tiene problemas para comparar valores numéricos de diferentes tipos. De manera similar, para un valor menor que cualquier otro valor, puede usar float('-inf') .

Respuesta directa a la pregunta del título:

Los enteros tienen un tamaño ilimitado y no tienen un valor máximo en Python.

Responda las direcciones que abordan el caso de uso subyacente:

De acuerdo con tu comentario de lo que estás tratando de hacer, actualmente estás pensando en algo como:

 minval = MAXINT; for (i = 1; i < num_elems; i++) if a[i] < a[i-1] minval = a[i]; 

Así no es como pensar en Python. Una mejor traducción a Python (pero aún no es la mejor) sería

 minval = a[0] # Just use the first value for i in range(1, len(a)): minval = min(a[i], a[i - 1]) 

Tenga en cuenta que lo anterior no utiliza MAXINT en absoluto. Esa parte de la solución se aplica a cualquier lenguaje de progtwigción: no necesita saber el valor más alto posible solo para encontrar el valor más pequeño en una colección.

Pero de todos modos, lo que realmente haces en Python es simplemente

 minval = min(a) 

Es decir, no escribes un bucle en absoluto. La función min() incorporada obtiene el mínimo de toda la colección.

long tipo long en Python 2.x utiliza aritmética de precisión arbitraria y no tiene el valor máximo posible. Está limitado por la memoria disponible. Python 3.x no tiene un tipo especial para los valores que no pueden ser representados por el entero de la máquina nativa: todo es int y la conversión se maneja entre bambalinas.

A diferencia de C / C ++ Long en Python tiene una precisión ilimitada. Consulte la sección Tipos numéricos en python para obtener más información. Para determinar el valor máximo de entero, solo puede consultar sys.maxint . Puede obtener más detalles en la documentación de sys .

Se puede usar: el valor máximo de float es

 float('inf') 

por negativo

 float('-inf') 

En python3, puede enviar el valor flotante a la función int para obtener ese número 1.7976931348623157e + 308 en representación de enteros.

 import sys int(sys.float_info.max)