Skip to content

L’intero (int) non ha limiti massimi in Python3

Python

In Python3, int non ha limite massimo.

Python2 ha due tipi interi, int e long, ma Python3 ha solo int. int in Python3 equivale a long in Python2 e non esiste un limite massimo. Puoi gestire un valore grande quanto la memoria è disponibile.

In questo articolo vengono descritti i seguenti contenuti.

  • int e long in Python2
  • int in Python3 non ha limite massimo

Vedere l’articolo seguente per i valori massimo e minimo del numero a virgola mobile float.

Si noti che NumPy utilizza tipi di dati con un numero fisso di bit, come int32 (intero a 32 bit) e int64 (intero a 64 bit).

int e long in Python2

Python2 ha due tipi interi, int e long.

Puoi ottenere il valore massimo di int con sys.maxint. Il valore minimo (il valore negativo più grande) è -sys.maxint-1.

sys.maxint è almeno 2**31-1 e in un ambiente a 64 bit è 2**63-1.

lungo non ha limite massimo e minimo.

int in Python3 non ha limite massimo

int in Python3 corrisponde a long in Python2 e non esiste un limite massimo e minimo.

La costante sys.maxint è più stata rimossa, poiché non esiste un limite al valore degli interi. Tuttavia, sys.maxsize può essere utilizzato come un numero intero più grande di elenco pratico o indice di stringa. È conforme alla dimensione intera “naturale” dell’implementazione ed è in genere uguale a sys.maxint nelle versioni precedenti sulla stessa piattaforma (supponendo le stesse opzioni di build).
Novità di Python 3.0 — Documentazione di Python 3.8.4

In Python3, sys.maxint è stato rimosso ed è stato aggiunto sys.maxsize.

sys.maxsize è 2**31-1 in un ambiente a 32 bit e 2**63-1 in un ambiente a 64 bit, come sys.maxint in Python2.

import sys

print(sys.maxsize)
# 9223372036854775807

print(type(sys.maxsize))
# <class 'int'>

print(sys.maxsize == 2**63 - 1)
# True

Convertito in numeri binari ed esadecimali con bin() e hex(), sys.maxsize è espresso come segue.

print(bin(sys.maxsize))
# 0b111111111111111111111111111111111111111111111111111111111111111

print(hex(sys.maxsize))
# 0x7fffffffffffffff

sys.maxsize non è il valore massimo di int e puoi gestire valori più grandi poiché la memoria è disponibile.

i = 10**100

print(i)
# 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

print(i > sys.maxsize)
# True

Il numero a virgola mobile float ha inf che rappresenta l’infinito. inf è considerato maggiore di qualsiasi valore di int.

print(float('inf'))
# inf

print(i > float('inf'))
# False

Vedere il seguente articolo su infinity inf.