Felix D.: parseInt("08") = 0 ??

Hallo,

Warum ergibt parseInt("08") nicht 8?

javascript:alert(parseInt('07'));  --> 7
javascript:alert(parseInt('08'));  --> 0

MfG
Felix

  1. 你好 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

    --
    73.255437% der Statistiken spielen eine Genauigkeit vor, die durch die angewandte Methode nicht gerechtfertigt wird.
    1. 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

      1. 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

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. 你好 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

          --
          Auf der ganzen Welt gibt es nichts Weicheres und Schwaecheres als Wasser. Doch in der Art, wie es dem Harten zusetzt, kommt nichts ihm gleich.
      2. 你好 Twilo,

        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.

        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

        --
        Der Verstand ist der Hausherr, der Koerper sein Gast.
  2. 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

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."