Jörg Peschke: Floats subtrahieren - spinn ich?

Hallo,
Möglicherweise bin ich einfach zu dumm...aber:

Bei eingabe des Befehls:
alert(23-20.9)

Sollte da nicht "2.1" ausgegeben werden????

Tut es aber nicht, bei mir gibt es ein:
"2.1000000000000014"

Browserübergreifend in Mozilla, IE und Opera.

Genauso übrigens bei

alert(23.0-20.9)

Nicht, dass sich dieses Problem nicht durch simples Stellen-abschneiden beheben liesse. Aber gehören tut das doch so nicht?!?

Hab ich jetzt das Konzept von Operatoren in JavaScript nicht begriffen, ist das ein längst bekannter Bug oder erleben wir ein Revival des Pentium-Divisionsfehlers????

  1. hi,

    falls du mit "spinnen" den zustand beschreiben möchtest, in dem sich jemand vermutlich befindet, der bei so einem problem nicht mal im archiv sucht - dann lautet die antwort auf die frage im titel vermutlich ja ;-)

    nur ein beispielthread: http://forum.de.selfhtml.org/archiv/2005/3/t104455/

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      falls du mit "spinnen" den zustand beschreiben möchtest, in dem sich jemand vermutlich befindet, der bei so einem problem nicht mal im archiv sucht - dann lautet die antwort auf die frage im titel vermutlich ja ;-)

      Ähm, ich HABE im Archiv gesucht (nach JavaScript Komma, JavaScript Float, JavaScript Gleitkomma), aber alles was ich gefunen habe waren Fehler bei Float-Zahlen in CSS-Angaben oder aber bei sehr, sehr grossen Zahlen bzw. sehr extremen Genauigkeitsvorgaben.

      Aber trotzdem danke für den Link.

      Mich verwundert auch nicht die Tatsache, dass JavaScript Gleitkomma-Berechnungen nicht beleibig genau macht, aber
      23 - 20.9 = 2.00000..014 finde ich nun doch ein starkes Stück.

      Aber gut, muss ich mit leben, und toFixed() steht mir ja da treu zur Seite ;)

      Viele Grüße,
      Jörg

      1. Hello,

        Ähm, ich HABE im Archiv gesucht (nach JavaScript Komma, JavaScript Float, JavaScript Gleitkomma), aber alles was ich gefunen habe waren Fehler bei Float-Zahlen in CSS-Angaben oder aber bei sehr, sehr grossen Zahlen bzw. sehr extremen Genauigkeitsvorgaben.

        Man munkelt, dass Fastix, oder TomIRL, oder bitworks (nur so als Auswahl) demnächst Workshops anbieten werden zum Thema "Suchen im Archiv des Self-Forums" ;-))

        Ich habe dazu auch noch einen Änderungsantrag laufen, dass man auch gezielt _ältere_ Postings des jeweiligen Jahres suchen kann, also dass wir z.B. einen FiFo-Schalter bekommen oder einen Monats-Selector

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Man munkelt, dass Fastix, oder TomIRL, oder bitworks (nur so als Auswahl) demnächst Workshops anbieten werden zum Thema "Suchen im Archiv des Self-Forums" ;-))

          Prima *gleich-anmeld* *g*

          (kann ich dass dann als berufliche Weiterbildung von der Steuer absetzen? :))

          1. Hello,

            Man munkelt, dass Fastix, oder TomIRL, oder bitworks (nur so als Auswahl) demnächst Workshops anbieten werden zum Thema "Suchen im Archiv des Self-Forums" ;-))

            Prima *gleich-anmeld* *g*

            (kann ich dass dann als berufliche Weiterbildung von der Steuer absetzen? :))

            Das bestimmt, wenn Du mit Programmierung und/oder Web-/Datenbanksystem zu tun hast.

            Ich könnte es ja noch als Bildungsurlaub (für Niedersachsen) anmelden ;-)

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
      2. hi,

        Mich verwundert auch nicht die Tatsache, dass JavaScript Gleitkomma-Berechnungen nicht beleibig genau macht, aber
        23 - 20.9 = 2.00000..014 finde ich nun doch ein starkes Stück.

        wie im verlinkten archivbeitrag mehrfach erwähnt wird, lassen sich viele dezimalbrüche nun mal nicht exakt binär abbilden.

        Struppi erwähnt dort auch gleich ganz zu anfang http://www3.futureware.at/artikel/zahlen.htm, was die art, wie floats im rechner intern binär abgelegt werden verdeutlichen sollte.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo,

          Struppi erwähnt dort auch gleich ganz zu anfang http://www3.futureware.at/artikel/zahlen.htm, was die art, wie floats im rechner intern binär abgelegt werden verdeutlichen sollte.

          Jepp, habe ich mir vorhin noch angeschaut. Bei genauerer Betrachtung hätts mir eigentlich auch gleich klar sein müssen, dass es an der Rechner-internen Darstellung liegt oder zumindest liegen kann.

          Inzwischen überrascht es mich eigentlich mehr, dass mir das Problem bisher
          (sei es im Studium oder im Job) noch nie aufgefallen ist - immerhin ist sowas ja nicht auf JavaScript beschränkt. Peinlich, peinlich, meine E-Mail-Adresse sollte ich augenblicklich aberkannt bekommen ;)

          Tja, man lernt eben nie aus, aber für was gibt es das SelfForum? :)

          Schönen abend noch,

          Jörg