2010-12-19 7 views
5

Ich habe einige Nullen vor einer positiven Ganzzahl. Ich möchte die Nullen entfernen, so dass nur die positive Ganzzahl übrig bleibt. Wie '001' wird nur '1' sein. Ich dachte, der einfachste Weg wäre, parseInt ('001') zu verwenden. Aber was ich entdeckt habe, ist, dass es nicht für die Nummer 8 und 9 funktioniert. Beispiel parseInt ('008') wird zu '0' anstelle von '8' führen.JavaScript-Funktion parseInt() analysiert keine Zahlen mit führender 0 korrekt

sind hier die ganze HTML-Code:

<html> <body> 
<script> 
var integer = parseInt('002'); 
document.write(integer); 

</script> 
</body> </html> 

Aber kann ich irgendwie dieses Problem melden? Weiß jemand eine andere einfache Umgehungsmöglichkeit dieses Problem?

+0

auch, stripping führende Nullen mit 'parseInt ('008'). ToString()' ist sehr ungeschickt, mit 'RegExp' statt –

Antwort

10

Dies wird dokumentiert Verhalten: http://www.w3schools.com/jsref/jsref_parseInt.asp

Strings mit einem führenden ‚0‘ werden analysiert, als ob sie Oktal waren.

+2

MDN-Dokumente sind in der Regel von viel höherer Qualität als ihre Gegenstücke w3schools. [Hier ist] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt) die relevante MDN-Seite. –

+1

Relevant: http://w3fools.com/ –

+0

[FireFox 21] (https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/21) hat sich seltsamerweise dazu entschlossen, [diese Funktion zu entfernen] (https://bugzilla.mozilla.org/show_bug.cgi?id=786135). Chrome war anscheinend schon eine Weile so: http://stackoverflow.com/questions/14542377 –

3

Nummer mit dem Präfix Null wird als Oktal geparst.

+2

Das ist nicht die ganze Geschichte (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Global_Objects/parseInt) - abhängig von Browser und Version. –

15

Sie haben die Basis der Nummer (radix)

parseInt('01', 10); 
+5

Ja, und ein JS-Code-Qualitäts-Tool wie JSLint (http://www.jslint.com/) kann Ihnen einen Kopf darüber geben :) –

1

Dies ist nicht wirklich ein Problem zu spezifizieren. Aus alten Gründen werden Strings, die mit 0 beginnen, in oktal interpretiert, und in oktal gibt es keine Ziffer 8. Um dies zu umgehen, sollten Sie explizit eine Radix (d. H. parseInt("008", 10)) übergeben.