2009-10-09 13 views

Antwort

53

gehören die radix:

parseInt("09", 10); 
+0

Danke für die Antwort Alter. – jessegavin

2
parseInt("09", 10); 

oder

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

kehrt 9 hier.

Es ist seltsam.

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

Er fragt nach JS – JonH

+0

@JonH: Richtig. Danke für die Warnung. Da er String statt String geschrieben hat, habe ich mich geirrt. – JCasso

+1

Je nach Browser und Version kann parseInt ("09") 0 zurückgeben. Es ist ein Fehler. – JonH

5

Sie können auch tun:

Number('09') => 9

Diese die ganze Zahl 9 auf IE7 zurückkehrt, IE8, FF3, FF4 und Chrome 10.

11

Das hat mich verrückt gefahren - parseInt("02") funktioniert aber nicht parseInt("09").

Wie schon andere gesagt haben, ist die Lösung zur Angabe der Basis 10:

parseInt("09", 10); 

Es gibt eine gute Erklärung für dieses Verhalten here

... In Javascript-Nummern beginnend mit Null betrachtet oktal und gibt es keine 08 oder 09 in oktalen, daher das Problem.

5

Erneutes Implementieren der vorhandenen parseInt, sodass, wenn sie mit einem Argument aufgerufen wird, automatisch "10" als zweites Argument eingefügt wird.

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