steve_M: Addieren mit JS ergibt falsches ergebnis?!

also mein Problem simpel aber gemein.

eine Addition von 21.30 + 37.30 ergibt bei mir als Ergebnis 58.599999999994 und nicht die Erwateten 58.60 habe es schon mit parseFloat probiert aber das ergibt auch nciht das richtig Ergebnis.

Würde mich über schnelle Hilfe freuen.

Danke

  1. also mein Problem simpel aber gemein.

    nein  ist es nicht. http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_rechnen

    Struppi.

  2. Hi,

    eine Addition von 21.30 + 37.30 ergibt bei mir als Ergebnis 58.599999999994 und nicht die Erwateten 58.60 habe es schon mit parseFloat probiert aber das ergibt auch nciht das richtig Ergebnis.

    Willkommen in der Welt der numerischen Mathematik.

    Computer rechnen binär. Nicht jede Zahl, die im Dezimalsystem eine endliche Nachkommastellenzahl hat, hat auch im Binärsystem eine endliche Nachkommastellenzahl.
    Dazu kommt dann noch, daß der Speicherplatz für eine Zahl im Computer notwendigerweise endlich ist ==> es können nicht alle Nachkommastellen gespeichert werden ==> Rundungsfehler.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Hallo,

    das Problem liegt weniger bei JavaScript als vielmehr an unserer falschen Anzahl an Fingern:

    http://dcljs.de/faq/antwort.php?Antwort=rechnen_rechnen

    Viele Grüße
    Carsten

  4. Hallo,

    Wenn es sich um physikalische Messwerte handelt, sollte man sowieso alle Ergebnisse so genau runden, wie man messen kann.
    Aber auch bei rein mathematischen Berchnungen darf man so etwas runden,
    mehr als 3 oder 4 Nachkommastellen sind ja selten interessant.

    Gruß
    Alexander Brock

    --
    Selfcode: ss:{ zu:| ls:# fo:| de:] va:} ch:? sh:( n4:? rl:? br:> js:) ie:{ fl:| mo:}
    Deshalb können Pinguine nicht fliegen:
    Was nicht fliegt kann auch nicht abstürzen
    1. viel einfacher:

      ((21.30 * 100) + (37.30 * 100)) / 100)

      vielleicht kann es ja nochmal wer brauchen.

      1. Hi Steve.

        Noch einfacher ist es, wenn du intern immer die 100fachen Werte nimmst und nur zur Ausgabe dividierst, vorausgesetzt du rechnest die ganze Zeit mit 2 Nachkommastellen.

        MfG _Siro.