web-dev-qa-db-fra.com

Valeurs maximales et minimales pour les ints

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?

532
bdhar

Python 3

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

Python 2

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.

613
senderle

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.

Voir: https://docs.python.org/3/whatsnew/3.0.html

185
Akash Rana

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.

144
Melle

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, car 1l 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
73
John Kugelman

Pour Python 3, c’est

import sys
max = sys.maxsize
min = -sys.maxsize -1
22
netskink

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 à

https://docs.python.org/3/library/sys.html

https://docs.python.org/3/library/sys.html#sys.maxsize

1
Wender

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

1
Nimbal Rahul

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.

0
Shital Shah

En utilisant le module sys (python 3)

import sys

INT_MAX = sys.maxsize  

INT_MIN = -sys.maxsize-1


print(INT_MAX,INT_MIN)
0
Deep Nirmal