27 votes

Comment analyser une chaîne avec un 0 en tête

Comment analyser "09" en 9?

52voto

Gabe Moothart Points 12400

inclure le radix:

 parseInt("09", 10);
 

11voto

codeulike Points 9017

Cela m'a rendu fou - parseInt("02") fonctionne mais pas parseInt("09") .

Comme d'autres l'ont dit, la solution est de spécifier la base 10:

 parseInt("09", 10);
 

Il y a une bonne explication à ce comportement ici

... En Javascript, les nombres commençant par zéro sont considérés comme octaux et il n'y a pas de 08 ou 09 en octal, d'où le problème.

5voto

Kieran P Points 141

Vous pouvez également faire:

Number('09') => 9

Cela renvoie l'entier 9 sur IE7, IE8, FF3, FF4 et Chrome 10.

5voto

TDot Points 51

Réimplémentez le parseInt existant afin que s'il est appelé avec un argument, "10" soit automatiquement inclus comme deuxième argument.

 (function(){
  var oldParseInt = parseInt;
  parseInt = function(){
    if(arguments.length == 1)
    {
      return oldParseInt(arguments[0], 10);    
    }
    else
    {
      return oldParseInt.apply(this, arguments);
    }
  }
})();
 

2voto

JonH Points 20454
 parseInt("09", 10);
 

ou

 parseInt(parseFloat("09"));
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X