Comment détecter si un nombre donné est un entier?
Comment puis-je tester une variable pour vérifier si elle contient un nombre, et c'est un entier?
Par exemple
if (1.589 == integer) // false
if (2 == integer) // true
Des indices?
8 réponses
num % 1 === 0
Cela convertira num
en premier type Number
, de sorte que toute valeur pouvant être convertie en entier passera le test (par exemple '42'
, true
).
Si vous voulez les exclure, vérifiez en outre
typeof num === 'number'
, Vous pouvez également utiliser parseInt()
pour ce faire, ie
parseInt(num) == num
Pour une vérification non typée et
parseInt(num) === num
Pour une vérification dactylographiée.
Notez que les tests ne sont pas équivalents: vérifier via {[8] } va d'abord convertir en String
, donc par exemple true
ne passera pas le vérifier.
Notez également que la vérification non typée via parseInt()
gérera correctement les chaînes hexadécimales, mais échouera pour les octales (c'est-à-dire les chaînes numériques avec zéro en tête) car elles sont reconnues par parseInt()
mais pas par Number()
. Si vous devez gérer des chaînes décimales avec des zéros en tête, vous devrez spécifier l'argument radix.
Que diriez-vous de ceci:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
Cela ne fonctionnerait-il pas:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
Vous pouvez soit utiliser les capacités d'analyse javas, soit essayer l'opérateur modulo %...
Il existe une fonction javascript appelée isNaN(val) qui renvoie true si val n'est pas un nombre.
Si vous voulez utiliser val comme nombre, vous devez convertir en utilisant parseInt () ou parseFloat ()
Modifier: oops. Correction de l'erreur comme mentionné dans le commentaire