2009-10-09 10 views

Répondre

53

comprennent le radix:

parseInt("09", 10); 
+0

Merci pour la réponse mec. – jessegavin

2
parseInt("09", 10); 

ou

parseInt(parseFloat("09")); 
2
parseInt("09",10); 

retours 9 ici.

C'est bizarre.

alert(parseInt("09")); // shows 9. (tested with Opera 10) 
+0

Il demande JS – JonH

+0

@JonH: Droite. Merci pour l'avertissement. Depuis qu'il a écrit une chaîne au lieu de chaîne, je me suis trompé. – JCasso

+1

Selon le navigateur et la version parseInt ("09") peut retourner 0. C'est un bug. – JonH

5

Vous pouvez également faire:

Number('09') => 9

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

11

Cela a été me conduire noix - parseInt("02") fonctionne mais pas parseInt("09").

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

parseInt("09", 10); 

Il y a une bonne explication de ce comportement here

... En chiffres Javascript à partir zéro sont considérés comme octal et il n'y a pas de 08 ou 09 en octal, donc le problème.

5

Réimplémenter le parseInt existant de sorte que s'il est appelé avec un argument, "10" est 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); 
    } 
    } 
})(); 
Questions connexes