Javascript et ActionScript : le piège de parseInt()
Comme tous développeurs pressés, nous utilisons très souvent des fonctions de façon empirique, sans en comprendre le fonctionnement réel et les subtilités de paramétrage. Et parfois, on le paye cher en mal de crâne, suite à des comportements incompréhensibles… et pourtant normaux.
Prenons la fonction Javascript parseInt()
. Elle permet de transformer une chaîne en nombre entier. Si on veut récupérer le département d’un code postal, le premier réflexe est de faire :
var departement = parseInt(codepostal.substring(0, 2));
En apparence tout fonctionne bien… sauf pour les départements 08 et 09 pour lesquels on obtient 0 ! Diable…
C’est oublier un peu vite le second paramètre radix
qui définit la base numérique à utiliser. Il est vital car en son absence, la base numérique dépend du format de la chaîne. Dans notre cas, les codes postaux commençant par 0 sont convertis en entiers de base octale (ou base 8). Notre but est d’obtenir un entier en base décimale (ou base 10), on précise donc la valeur 10 au second paramètre de la fonction parseInt()
:
var departement = parseInt(codepostal.substring(0, 2), 10);
Ouf ! Pour information, radix
supporte les valeurs 0 (valeur par défaut, sélection d’une base hexadécimale, octale ou décimale selon le format de la chaîne) et de 2 à 36. Par exemple, si on souhaite un entier hexadécimal, radix
sera égal à 16.
On ne m’y reprendra plus !
Commentaires
clement
merci tu ma sauvé!!!
31 mai 2007, 14h45 ·tu serais pas le frer de sebastien?? c’est mon delegué!!
encor merci
Christophe
Avec plaisir !
Frère de Sébastien ? Euh, non…
31 mai 2007, 15h49 ·