Je cherche des valeurs minimales et maximales pour les entiers en python. Par exemple, en Java, nous avons Integer.MIN_VALUE
et Integer.MAX_VALUE
. Y at-il quelque chose comme ça en python?
En Python 3, cette question ne s'applique pas. Le type plain int
est illimité.
Cependant, il se peut que vous recherchiez la taille de la machine Word. C'est toujours disponible dans Python 3 en tant que sys.maxsize
.
En Python 2, la valeur maximale pour les valeurs simples int
est disponible en tant que sys.maxint
:
>>> sys.maxint
9223372036854775807
Vous pouvez calculer la valeur minimale avec -sys.maxint - 1
comme indiqué ici .
Python bascule de manière transparente des entiers simples aux entiers longs une fois que vous dépassez cette valeur. Donc, la plupart du temps, vous n'aurez pas besoin de le savoir.
La constante sys.maxint a été supprimée de Python 3.0, utilisez plutôt sys.maxsize
Entiers
- PEP 237: Essentiellement, renommé depuis longtemps int. C'est-à-dire qu'il n'y a qu'un seul type intégral intégré, nommé int; mais il se comporte principalement comme le vieux type long.
- PEP 238: Une expression telle que 1/2 renvoie un float. Utilisez 1 // 2 pour obtenir le comportement de troncature. (Cette dernière syntaxe existe depuis des années, au moins .__ depuis Python 2.2.)
- La constante sys.maxint a été supprimée car il n'y a plus de limite à la valeur des entiers. Cependant, sys.maxsize peut être utilisé en tant que entier plus grand que n'importe quelle liste pratique ou index de chaîne. Il est conforme à taille "naturelle" de l’implémentation et est généralement la même comme sys.maxint dans les versions précédentes sur la même plate-forme (en supposant les mêmes options de compilation ).
- Le repr () d’un entier long n’inclut plus le dernier L; le code qui supprime inconditionnellement ce caractère coupera le dernier chiffre à la place. (Utilisez str () à la place.)
- Les littéraux octaux ne sont plus de la forme 0720; utilisez 0o720 à la place.
Si vous avez juste besoin d’un nombre plus grand que tous les autres, vous pouvez utiliser
float('inf')
de manière similaire, un nombre inférieur à tous les autres:
float('-inf')
Cela fonctionne à la fois dans Python 2 et 3.
En Python, les entiers basculeront automatiquement d’une représentation int
de taille fixe à une représentation variable de largeur long
une fois que vous aurez passé la valeur sys.maxint
, qui correspond à 231 - 1 ou 263 - 1 selon votre plate-forme. Notez la L
qui est ajoutée ici:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
Extrait du manuel Python :
Les nombres sont créés par des littéraux numériques ou à la suite de fonctions et d'opérateurs intégrés. Les littéraux entiers non décorés (y compris les nombres binaires, hexadécimaux et octaux) donnent des entiers simples, à moins que la valeur qu'ils indiquent ne soit trop grande pour être représentée sous la forme d'un entier simple, auquel cas ils donnent un entier long. Les littéraux entiers avec un suffixe
'L'
ou'l'
donnent des entiers longs ('L'
est préférable, car1l
ressemble trop à onze!).
Python essaie très fort de prétendre que ses entiers sont des entiers mathématiques et sont non bornés. Il peut, par exemple, calculer facilement un googol :
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
Pour Python 3, c’est
import sys
max = sys.maxsize
min = -sys.maxsize -1
Je compte beaucoup sur des commandes comme celle-ci.
python -c 'import sys; print(sys.maxsize)'
Max int renvoyé: 9223372036854775807
Pour plus de références pour 'sys', vous devriez accéder à
Vous pouvez utiliser 'inf' comme ceci: import math bool_true = 0<math.inf bool_false = 0<-math.inf
Référez-vous à: math - Fonctions mathématiques
Si vous voulez le maximum pour les index de tableau ou de liste (équivalent à size_t
en C/C++), vous pouvez utiliser numpy:
np.iinfo(np.intp).max
C’est la même chose que sys.maxsize
mais l’avantage est que vous n’avez pas besoin d’importer un système juste pour cela.
Si vous voulez max pour nat int sur la machine:
np.iinfo(np.intc).max
Vous pouvez regarder d'autres types disponibles dans doc .
Pour les floats, vous pouvez également utiliser sys.float_info.max
.
En utilisant le module sys
(python 3)
import sys
INT_MAX = sys.maxsize
INT_MIN = -sys.maxsize-1
print(INT_MAX,INT_MIN)