JavaScript

IS_INT() ET IS_FLOAT() : VÉRIFIER SI UNE VARIABLE EST UN INT OU UN FLOAT EN JAVASCRIPT

D

Dimanche 23 février 2020

Mis à jour le dimanche 23 février 2020

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 type int, il suffit de faire :
function isInt(variable) {
  if (!Number.isNaN(Number.parseInt(variable))) {
    return true
  }
  else {
    return false
  }
}

Explications

La fonction Number.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 pour is_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 fonction Number.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.