JS verrechnet sich
Robert Kuhlemann
- javascript
Hilfe! Mein Zeitrechner spinnt!
Hier ein kurzes Script:
<script>
document.write(008*60+"<br>"+009*60+"<br>"+010*60+"<br>"+011*60)
</script>
Frage: Wieso rechnet JS bis 009*60 (=540) richtig und ab
010*60 (=480) falsch??
Oder anders gefragt: Was mache ich falsch??
Festgestellt unter MSIE4.0
Robert Kuhlemann
Hallo Robert!
Hilfe! Mein Zeitrechner spinnt!
...
Frage: Wieso rechnet JS bis 009*60 (=540) richtig und ab
010*60 (=480) falsch??
Oder anders gefragt: Was mache ich falsch??
Ganz kann ich dir deine Frage nicht beantworten, aber es liegt an der führenden Null. So ein ähnliches Thema wurde schon im Forum besprochen, schau mal unter <../../sfarchiv/1999_2/t03219.htm>.
Viele Grüße,
Alexander Kirk
Hi,
das haengt irgendwie mit den fuehrenden Nullen zusammen, und dem Parameter "Radix". Ein Zahl beginnend mit 0 wird als Oktalzahl, ohne 0 als Dezimal interpretiert.
Aber warum das so ist, koennen die JS-Gurus besser erklaeren. Irgendwie gibt es auch noch 0x als Hexzahl.
Wenn Du die fuehrenden 0 entfernst, stimmt die Rechnung
Gruesse
Wilhelm
Hilfe! Mein Zeitrechner spinnt!
Hier ein kurzes Script:
<script>
document.write(008*60+"
"+009*60+"
"+010*60+"
"+011*60)
</script>Frage: Wieso rechnet JS bis 009*60 (=540) richtig und ab
010*60 (=480) falsch??
Oder anders gefragt: Was mache ich falsch??
Hallo!
das haengt irgendwie mit den fuehrenden Nullen zusammen, und dem Parameter "Radix". Ein Zahl beginnend mit 0 wird als Oktalzahl, ohne 0 als Dezimal interpretiert.
Aber warum das so ist, koennen die JS-Gurus besser erklaeren. Irgendwie gibt es auch noch 0x als Hexzahl.
Wenn Du die fuehrenden 0 entfernst, stimmt die Rechnung
Du hast es doch eigentlich schon alles gesagt. Na gut, man kann's noch etwas erlaeutern.
Wie gesagt, mit 0 beginnende Zahlen werden oktal interpretiert. Also:
oktal dezimal hexadezimal
000 0 0x00
001 1 0x01
002 2 0x02
003 3 0x03
004 4 0x04
005 5 0x05
006 6 0x06
007 7 0x07
010 8 0x08
011 9 0x09
012 10 0x0A
013 11 0x0B
014 12 0x0C
015 13 0x0D
016 14 0x0E
017 15 0x0F
020 16 0x10
021 17 0x11
022 18 0x12
023 19 0x13
024 20 0x14
025 21 0x15
026 22 0x16
027 23 0x17
030 24 0x18
So, na toll, und was ist jetzt mit der 008 und der 009? Tja, diese oktalen Zahlen gibt es gar nicht! Und der Netscape bringt da auch ganz brav eine Fehlermeldung, wie es sein soll (wenn diese auch ein wenig irrefuehrend ist). Aber der IE mit seiner schwachsinnigen Fehlertoleranz interpretiert 009 dann eben einfach als die dezimale Zahl 9, was schlicht und einfach falsch ist. Lest es von meinen Lippen: FALSCH! *aufreg* *fluch* Und 9*60 ist nach wie vor 540. Aber die 010 erkennt er dann wieder als ordentliche oktale Zahl, welche der dezimalen 8 entspricht, tja und 8*60 ist eben 480.
Wieder mal ein schoenes Beispiel, wie Microsoft den Leuten eine rosa Welt vorspielt, wo es fuer sie einfacher waere, wenn man ihnen erlauben wuerde, selber zu denken. *laester*
Calocybe