parseInt("08") = 0 ??
Felix D.
- javascript
2 Christian Kruse0 Twilo
2 wahsaga
Hallo,
Warum ergibt parseInt("08") nicht 8?
javascript:alert(parseInt('07')); --> 7
javascript:alert(parseInt('08')); --> 0
MfG
Felix
你好 Felix,
Warum ergibt parseInt("08") nicht 8?
javascript:alert(parseInt('07')); --> 7
javascript:alert(parseInt('08')); --> 0
parseInt() interpretiert die Zahl wegen der fuehrenden 0 als Oktal-Zahl.
Und das Oktal-System hat bekannterweise nur 8 Ziffern (0-7) -- die 0 ist
also ein Fehlerwert.
再见,
CK
Hallo,
Warum ergibt parseInt("08") nicht 8?
javascript:alert(parseInt('07')); --> 7
javascript:alert(parseInt('08')); --> 0
parseInt() interpretiert die Zahl wegen der fuehrenden 0 als Oktal-Zahl.
Und das Oktal-System hat bekannterweise nur 8 Ziffern (0-7) -- die 0 ist
also ein Fehlerwert.
wenn ich das in meiner Adresszeile von Opera 8/b2 einfüge, kommt 8 bei raus.
mfg
Twilo
hi,
parseInt() interpretiert die Zahl wegen der fuehrenden 0 als Oktal-Zahl.
Und das Oktal-System hat bekannterweise nur 8 Ziffern (0-7) -- die 0 ist
also ein Fehlerwert.wenn ich das in meiner Adresszeile von Opera 8/b2 einfüge, kommt 8 bei raus.
ja, ist mir auch aufgefallen.
"schwerwiegender" bug?
ich denke, eher nein - opera scheint nur _per default_ von der zahlenbasis 10 auszugehen, wenn die zahl eigentlich ein string ist.
wenn man ihm explizit 8 als gewünschte basis des zahlensystems vorgibt - parseInt('08', 8) - liefert auch er 0.
gruß,
wahsaga
你好 wahsaga,
[... parseInt(08) gibt im Opera 8 ...]
ja, ist mir auch aufgefallen.
"schwerwiegender" bug?
Nein, sie halten sich da streng an den Standard, siehe mein Posting an Twilo.
再见,
CK
你好 Twilo,
Warum ergibt parseInt("08") nicht 8?
javascript:alert(parseInt('07')); --> 7
javascript:alert(parseInt('08')); --> 0parseInt() interpretiert die Zahl wegen der fuehrenden 0 als Oktal-Zahl.
Und das Oktal-System hat bekannterweise nur 8 Ziffern (0-7) -- die 0 ist
also ein Fehlerwert.wenn ich das in meiner Adresszeile von Opera 8/b2 einfüge, kommt 8 bei
raus.
Ja, dummerweise ist das eine recht bloede Freiheit, die der Standard da
bereit haelt. Im Standard steht eigentlich, dass nur 0x oder 0X eine
spezielle Bedeutung hat: es leitet Zahlen im Hex-Format ein. Aber etwas
spaeter in einer Note heisst es, dass die Implementation die Freiheit hat,
eine Zahl mit fuehrender 0 und ohne folgendes X oder x als Oktal-Zahl zu
bewerten, wenn die Basis nicht angegeben wurde. Das fuehrt dann leider bei
unterschiedlichen Browsern zu unterschiedlichen Ergebnissen.
再见,
CK
hi,
Warum ergibt parseInt("08") nicht 8?
javascript:alert(parseInt('07')); --> 7
javascript:alert(parseInt('08')); --> 0
weil zahlen mit führender null in javascript oktalzahlen sind.
zusätzliche angabe der basis des zahlensystems schafft abhilfe ->
parseInt('08', 10)
gruß,
wahsaga