Skip to content

Integer (int) n’a pas de limite maximale en Python3

En Python3, int n’a pas de limite maximale.

Python2 a deux types entiers, int et long, mais Python3 n’a que int. int en Python3 est équivalent à long en Python2, et il n’y a pas de limite max. Vous pouvez gérer une valeur aussi grande que la mémoire disponible.

Cet article décrit le contenu suivant.

  • int et long en Python2
  • int en Python3 n’a pas de limite maximale

Consultez l’article suivant pour connaître les valeurs maximales et minimales du nombre à virgule flottante float.

Notez que NumPy utilise des types de données avec un nombre fixe de bits, tels que int32 (entier 32 bits) et int64 (entier 64 bits).

int et long en Python2

Python2 a deux types d’entiers, int et long.

Vous pouvez obtenir la valeur maximale de int avec sys.maxint. La valeur min (la plus grande valeur négative) est -sys.maxint-1.

sys.maxint est au moins 2**31-1, et sur un environnement 64 bits, c’est 2**63-1.

long n’a pas de limite maximale et minimale.

int en Python3 n’a pas de limite maximale

int en Python3 correspond à long en Python2, et il n’y a pas de limite max et min.

La constante sys.maxint a été supprimée, car il n’y a plus de limite à la valeur des nombres entiers. Cependant, sys.maxsize peut être utilisé comme un entier plus grand que n’importe quelle liste pratique ou index de chaîne. Il est conforme à la taille entière « naturelle » de l’implémentation et est généralement identique à sys.maxint dans les versions précédentes sur la même plate-forme (en supposant les mêmes options de génération).
Quoi de neuf dans Python 3.0 — Documentation Python 3.8.4

Dans Python3, sys.maxint a été supprimé et sys.maxsize a été ajouté.

sys.maxsize vaut 2**31-1 dans un environnement 32 bits et 2**63-1 dans un environnement 64 bits, comme sys.maxint dans Python2.

import sys

print(sys.maxsize)
# 9223372036854775807

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

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

Converti en nombres binaires et hexadécimaux avec bin() et hex(), sys.maxsize est exprimé comme suit.

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

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

sys.maxsize n’est pas la valeur maximale de int, et vous pouvez gérer des valeurs plus grandes car la mémoire est disponible.

i = 10**100

print(i)
# 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

print(i > sys.maxsize)
# True

Le nombre à virgule flottante float a inf représentant l’infini. inf est jugé supérieur à toute valeur de int.

print(float('inf'))
# inf

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

Voir l’article suivant sur infinity inf.