Mailinglisten-Archive |
Moin auch :-) eigentlich bezog sich meine Aussage auf die standardmäßigen Datentypen wie float/integer. Mit den BC-Dingern hab ich das noch nicht ausprobiert. Aber irgendwie sehe ich da auch schwarz ob man da nicht ab und zu über das automatische Type-casting stolpert... Ich werd mir die Dinger mal ansehn, vielleicht seh ich dann klarer ;-) Grüße, Mathias > ---------- > Von: Martin Rieth[SMTP:mrieth_(at)_metanormal.de] > Antwort an: php_(at)_infosoc.uni-koeln.de > Gesendet: Freitag, 17. März 2000 14:34 > An: Gloss Mathias > Cc: Martin Rieth > Betreff: Re: [php] round() ? > > 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? > > > > -- > ** Durchgehend geöffnet: http://www.php-center.de ** > Die PHP-Liste: mailto:php_(at)_infosoc.uni-koeln.de > http://infosoc.uni-koeln.de/mailman/listinfo/php >
php::bar PHP Wiki - Listenarchive