Mailinglisten-Archive |
Moin Moin Gloss,
Es ist moeglich genaue, exakte Werte zu berechnen.
Das magische Stichwort heisst: Binary Coded Decimal (BCD)
Unter PHP als:
" BC Arbitrary Precision Math Functions " zu finden.
Grund hier wird faktisch mit Dezimalzahlen gerechnet. Also bei jedem
Nibble werden einige Werte vernachlaessigt ...
0-9 wird genutzt
A-F wird vergeudet.
Die hexadezimale Zahl: 0x42 entspricht also 42. :-) HURRA! :-)
Keine Umrechnung folglich keine Fehler ... :-7
Deine Gedanken erreichten mich am Freitag, 17. März 2000 und veranlassten mich zu folgendem:
>> 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,
G> Hinzufügen möchte ich noch der ausgezeichneten Erklärung von Stefan,
G> daß dieses Problem bei allen Programmiersprachen auftritt, sobald es
G> sich um Gleitkommazahlen handelt.
G> Die einzigste Abhilfe ist, die Werte als Integer in Pfennigen abzuspeichern.
G> Dann hast du nur ganze Zahlen, und es treten keine Rundungsfehler mehr
G> auf. Bei der Ausgabe kannst du sie ja dann durch 100 teilen, und hast
G> wieder DM und PF.
I say 42, Martin
----- _ _ _ _ . . _ _ . . _ .
|-' /-\ |-< /-\ |\| (_) |-< |\/| /-\ |_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
eMail = mailto:mrieth_(at)_paranormal.de
Homepage = http://www.paranormal.de/
Ich bin PARANORMAL - Du auch?
php::bar PHP Wiki - Listenarchive