Verhaltensunterschied zwischen parseInt () und parseFloat () [duplizieren]

8

Warum ist diese Verhaltensdifferenz zwischen parseInt() und parseFloat() ?

Ich habe eine Zeichenfolge, die 08 enthält.

Wenn ich diesen Code schreibe:

%Vor%

Die folgende Ausgabe wird generiert:

%Vor%

Warum gibt parseInt und parseFloat in diesem Fall zwei verschiedene Ergebnisse zurück?

    
Naveed Butt 02.03.2012, 05:27
quelle

2 Antworten

10

parseInt () nimmt die Basis Ihrer Nummer gemäß den ersten Zeichen in der Zeichenfolge an . Wenn es mit 0x beginnt, wird Basis 16 (hexadezimal) angenommen. Andernfalls, wenn es mit 0 beginnt, wird Basis 8 (oktal) angenommen. Andernfalls wird Basis 10 angenommen.

Sie können die Basis als zweites Argument angeben:

%Vor%

Von MDN (oben verlinkt):

  

Wenn Radix nicht definiert oder 0 ist, geht JavaScript von folgendem aus:

     

Wenn die Eingabezeichenfolge mit "0x" oder "0X" beginnt, ist radix 16   (hexadezimal). Wenn die Eingabezeichenfolge mit "0" beginnt, ist Radix acht   (oktal). Diese Funktion ist nicht Standard und einige Implementierungen   absichtlich nicht unterstützen (stattdessen mit dem radix 10). Dafür   Grund geben Sie immer ein Radix an, wenn Sie ParseInt verwenden. Wenn die Eingabezeichenfolge   beginnt mit jedem anderen Wert, die Radix ist 10 (dezimal).

    
Paulpro 02.03.2012, 05:29
quelle
2

Sie sollten immer den Radix-Parameter mit parseInt() ex parseInt('013', 10) einschließen, andernfalls kann er in eine andere numerische Basis konvertiert werden:

%Vor%     
Charlie Pops 02.03.2012 05:34
quelle

Tags und Links