Déterminer si une valeur est un nombre entier en Python
Je tiens à déterminer si une valeur numérique en Python est un nombre entier. Par exemple, étant donné:
y = x / 3
Je veux distinguer entre les valeurs de x
qui sont divisibles par 3 ceux qui ne le sont pas.
source d'informationauteur johntheripper | 2011-06-04
Vous devez vous connecter pour publier un commentaire.
Entiers ont pas de décimales. Si tu voulais parler de "vérifier si un certain nombre ai décimales en Python", vous pouvez le faire:
Edit: Comme Ollie souligné dans le commentaire en dessous de ce post, is_integer fait partie de la bibliothèque standard, et ne devrait donc pas être réimplémentée comme je l'ai fait ci-dessous.
Cette fonction utilise le fait que tous les autres ensemble en aura au moins un nombre divisible par deux sans reste. Zéro dans les fractions de la représentation dans
n
oun+1
entraîne les deuxn%2
et(n+1)%2
d'avoir un reste. Ceci a l'avantage que l'ensemble des nombres représentés en tant que float valeurs retournera True.La fonction fonctionne correctement pour les positifs
et les nombres négatifs et nuls pour autant que je puisse déterminer. Comme mentionné dans la fonction, il échoue pour des valeurs très proche d'un entier.
x % 3 == 0
seraTrue
six /3
est un entier.Voici une autre méthode:
Cela fonctionne parce que int(x) tient essentiellement à l'étage d'un nombre (ex. 3.6453 -> 3). Si il y a quelque chose à gauche sur une fois que vous soustrayez le sol, il ne pouvait pas être un nombre entier.
en supposant que vous dire si une chaîne de caractères contenant des chiffres a aussi un point décimal:
Pour tester si son intégrale vous pourriez mod 1:
En Python 2, diviser un entier par un entier (int) retourne un int (à moins que python était invoquée à l'
-Qnew
option, ou unfrom __future__ import division
est au début de la source; dans ce cas/
renvoie un float); un//
spécifie division entière.En Python 3, diviser un entier par un entier (int) renvoie un float si vous utilisez "/", ou un int si vous utilisez "//".
Si vous voulez savoir si un int sera divisé en un autre int exactement, utiliser "%" pour chercher un reste.
Il est préférable de faire votre détermination avant de faire la division, en supposant que votre variable x est un entier.
Essayer de faire les tests d'égalité ou des comparaisons sur les nombres à virgule flottante est dangereux: http://www.lahey.com/float.htm
La réponse déjà fournie en utilisant le module avant de faire la division pour voir si un nombre entier est divsible par l'autre entier est sûr. Après tu fais une division et sont à traiter avec, éventuellement, des valeurs à virgule flottante, puis les nombres ne sont plus exactement les entiers ou non.