Un bug dans la fonction javascript parseInt

Pour rappel, la fonction javascript parseInt() permet de transformer une chaîne de caractères en entier (de manière plus précise, elle retourne le premier entier trouvée dans la chaîne de catactères).

Il existe un bug dans cette fonction qui ne semble toujours pas corrigé. Dans certains cas, très peu courant, elle retourne une valeur erronée : les exécutions de parseInt('08') et parseInt('09') retournent toutes les deux la valeur 0 au lieu de 8 et 9 respectivement.

L'explication est que le navigateur croit que le premier 0 lui signifie que le nombre doit être converti en base octale (base 8) et que 8 et 9 ne sont donc pas valide.

Deux solutions peuvent être utilisées pour contourner ce problème :

  • parseInt(parseFloat(<valeur texte>))
  • parseInt(<valeur texte>, 10)

Pour plus d'informations, lire l'article parseInt Bug de Breaking Par Consulting Inc.

Posté le Wednesday 20 April 2005 dans .

Commentaires

Il n'y a aucun commentaire ; soyez le premier à déposer le vôtre.

Ajouter un commentaire

Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.