Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Une excellente thèse sur Simile Exhibit
    • Olivier Rossel | Bonjour. Malgre les annees, avez vous toujours en memoire vos usages d’Exhibit? Je serais ravi d’en discuter avec vous. Cordialement, Olivier Rossel.
  • Utiliser le planificateur de tâches OVH (crontab) avec PHP
    • Max | Bonjour, comme faire pour appeler une version de PHP qui n’est plus proposée par défaut dans le manager ? J’essaie de lancer un cron avec php 5.3 mais le log affiche No such file...
    • Christophe | @absolument Merci pour ces précisions. Je n’ai pas mis en place de tâches cron récemment, mais j’ai reçu quelques notifications étranges d’OVH il y a quelques...
  • Récupérer le dernier auto-incrément MySQL avec PHP
    • Thy | Sujet toujours *très* utile en 2015 ! Je réponds à Serge tsimba qui récupère un « Resource id ». (Et à tous ceux qui ont le même souci mais qui ne le disent pas) :)...
  • Régler l’heure de serveurs virtuels sous Debian
    • Ares_XL | Il semble que sur Débian la commande « tzconfig &ra quo; soit dépréciée et remplacée par : « dpkg-reconfigure tzdata » elle donne accès à une...
 

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 !