Est-ce qu'il existe des constantes predefinies en python pour exprimer le plus petit INT et le plus grand INT ? (ou avec FLOAT)
c'est plus simple d'avoir des constantes pour initialise le calcul d'un min ou d'un max.![]()
Est-ce qu'il existe des constantes predefinies en python pour exprimer le plus petit INT et le plus grand INT ? (ou avec FLOAT)
c'est plus simple d'avoir des constantes pour initialise le calcul d'un min ou d'un max.![]()
Bonjour,
reponse partielle, pour le plus grand int:dependant du système.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 >>> import sys >>> sys.maxint 2147483647
Je suppose qu'en Python tous les entiers sont signés ? Donc si maxint vaut 2147483647, il y a de bonnes chances pour que 'minint' (vous me comprenez) descende à -2147483648.
=> c'est vérifiéCQFD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>>type(-2147483648) <type 'int'> >>>type(-2147483649) <type 'long'>
Voilà !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import sys maxInt = sys.maxint minInt = -(maxInt +1)
ok, merci, mais du coup, je suis oblige de les definir moi-meme.
est-ce que c'est portable ?
je veux dire le module 'sys' depend de la machine non ?
je suis surpris que de telles constantes n'existent pas dans python.
A mon avis, le maxInt depend de l'architecture de ta machine, il est donc variable.
Pourquoi cela te pose-t-il problème?
Ben si, on vient de te le montrerEnvoyé par KINENVEU
![]()
Evidemment que c'est portable : on définit 'minInt' à partir du 'maxint' donné par le système. C'est donc valable pour n'importe quel système. Quant à ma formule, elle est tout à fait valable, c'est une histoire de codage des entiers.
Mais je ne comprends vraiment pas pourquoi tu as besoin de connaître ces valeurs... Python sait se débrouiller tout seul : si tu utilises un entier, et que tu dépasses ses limites, il sera automatiquement converti en entier long, ce qui offre des limites bien plus grandes. Et si tu atteins à nouveau ces limites, ta variable sera à nouveau adaptée (de 'long' passera à 'double'). Et là, je ne pense pas que tu puisses raisonnablement envisager d'atteindre ces limites...
Bref, aucun risque de débordement.
Edit : après quelques tests, il ne semble pas y avoir de type 'double' : le type 'long' domine. Ca va vraiment très très loin... Je ne sais pas comment Python gère les entiers longs, mais ils ne semblent pas avoir de limites. Je suis monté jusqu'à 2 puissance 4096, et c'est toujours du type 'long'... Intéressant, hmm ?
Partager