is_int() et is_float() : vérifier si une variable est un int ou un float en JavaScript
Tout développeur JavaScript, surtout s'il provient d'un langage tel que PHP, s'est un jour posé la question de comment vérifier le type d'une variable.Dans nos programmes, il est très souvent utile de vérifier si une variable est de type
int
ou float
avant d'effectuer des calculs avec.Mais JavaScript ne propose pas de fonction qui s'apparenterait à des
is_int()
ou is_float()
dans d'autres langages.
Alors, comment faire ?is_int()
Pour vérifier si une variable est de typeint
, il suffit de faire :function isInt(variable) {
if (!Number.isNaN(Number.parseInt(variable))) {
return true
}
else {
return false
}
}
Explications
La fonctionNumber.parseInt()
de JavaScript renvoie soit un type int
, soit NaN
si la variable n'a pas pu être parsée en int
.En partant de ce principe, si
NaN
est renvoyé par cette fonction, alors la variable n'a pas pu être parsée en int
.Il suffit donc de vérifier si cette fonction renvoie
NaN
pour savoir si la variable peut être parsée en int
ou non.is_float()
Même principe que pouris_int()
.Pour vérifier si une variable est de type
float
, il suffit de faire :function isFloat(variable) {
if (!Number.isNaN(Number.parseFloat(variable))) {
return true
}
else {
return false
}
}
Explications
La fonctionNumber.parseFloat()
de JavaScript renvoie soit un type float
, soit NaN
si la variable n'a pas pu être parsée en float
.En partant de ce principe, si
NaN
est renvoyé par cette fonction, alors la variable n'a pas pu être parsée en float
.Il suffit donc de vérifier si cette fonction renvoie
NaN
pour savoir si la variable peut être parsée en float
ou non.Une erreur ? une question ? une critique ? une faute ? un conseil ? ou tout simplement un merci ?
Lâche ton commentaire
Birdy Le mardi 13 octobre 2020 à 14:41:45
Number.parseFloat('123.456.789') ne retourne pas NaN, la fonction arrive à parser cette chaîne (elle retourne 123.456).
Ce qui, dans bien des cas peut poser problème.
Pour éviter ce soucis, on peut rajouter une comparaison faible entre la chaîne et le nombre parsé :
(Number.isNaN(Number.parseFloat(variable)) || (Number.parseFloat(variable) != variable))
Enfin, on peut simplifier les fonctions en retournant directement les booléens, plutôt que faire un if/else inutile.
Number.parseFloat('123.456.789') ne retourne pas NaN, la fonction arrive à parser cette chaîne (elle retourne 123.456).
Ce qui, dans bien des cas peut poser problème.
Pour éviter ce soucis, on peut rajouter une comparaison faible entre la chaîne et le nombre parsé :
(Number.isNaN(Number.parseFloat(variable)) || (Number.parseFloat(variable) != variable))
Enfin, on peut simplifier les fonctions en retournant directement les booléens, plutôt que faire un if/else inutile.