Mailinglisten-Archive |
Aloha, > ---------- > Von: Stefan Engelhardt[SMTP:Stefan.Engelhardt_(at)_stud.fh-hannover.de] > > > Kann mir jemand die LOGIK dahinter erklären ??? > > > > Rein mathematisch ist 449.00 - 488.99 = 0.009999999999999 > > schlichtweg FALSCH. > > Das man mit runden das wieder gerade biegen kann is mir klar, > > nur wieso ist der Computer (oder php ? weil in pascal geht das > > ohne rumfummeln ) anscheinend zu doof das richtig zu berechnen ?? > Das hängt mit der internen Darstellung von Gleitkommazahlen zusammen. > Angenommen, > [...] Hinzufügen möchte ich noch der ausgezeichneten Erklärung von Stefan, daß dieses Problem bei allen Programmiersprachen auftritt, sobald es sich um Gleitkommazahlen handelt. Die einzigste Abhilfe ist, die Werte als Integer in Pfennigen abzuspeichern. Dann hast du nur ganze Zahlen, und es treten keine Rundungsfehler mehr auf. Bei der Ausgabe kannst du sie ja dann durch 100 teilen, und hast wieder DM und PF. Dummerweise bzw. praktischerweise kennen Programmiersprachen wie PHP und Perl keine Typdefinitionen der Variablen. Viele Grüße, Mathias
php::bar PHP Wiki - Listenarchive