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?
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).
Sie sollten immer den Radix-Parameter mit parseInt()
ex parseInt('013', 10)
einschließen, andernfalls kann er in eine andere numerische Basis konvertiert werden:
Tags und Links javascript parsing