phpbar.de logo

Mailinglisten-Archive

[php] round() ?

[php] round() ?

Hartmut Holzgraefe hartmut_(at)_six.de
Fri, 17 Mar 2000 10:31:17 +0100


Cyrill Schumacher wrote:

> hey ho!
>
> wir hatten das thema schon mal in der liste, aber leider konnte
> ich keine antwort finden... :-(
> wenn ich rechnen lasse:
>
> 24.62 DM - 24.61 DM = 0.01 DM ?
>
> Falsch! Leider ergibt das ergebnis: 0.010000000000002
>
> oder 449.00 DM - 448.99 DM = 0.0099999999999999999999
>
> Wie kann ich jetzt diese Ergebnisse runden auf 0.01 ???
> mit round() geht es nicht, da man hier nur int werte erhält
> und deine d(o)ubels ;-)
> hat einer ne Idee für so eine round() Funktion ?

ich nehme an, es geht Dir um die Ausgabe der Ergebnisse,
hier ist printf (bzw. sprintf()) Dein Freund:

printf("%.2f",449.00-448.99);   --> 0.01

Die Formatangabe %.2f steht dabei für Floating-Point-Wert
mit 2 Stellen hinter dem Komma.

Eine entsprechende round() Funktion mit Angabe der
Nachkommastellen bringt nichts, da die interne Darstellung
der Werte weiter binär bleibt und damit dieselben
Rundung'fehler' immer wieder auftauchen, wenn man bis zur
letzten Stelle alles ausgiebt.

Wer es ganz genau haben möchte benutzt die bcmath-Funktionen,
aber für Währungsrechnungen wären das Kanonen auf Spatzen,
solange Du nicht mit Milliardenbeträgen jonglierst.

PS:
einige Datenbanken und z.T. auch Programmiersprachen (?)
bieten einen Extra-Datentyp MONEY oder CURRENCY, um
genau diese Verwirrungen zu vermeiden

--
Hartmut Holzgraefe         hartmut_(at)_six.de           http://www.six.de

 Besuchen Sie Six auf der Hannover-Messe (20.-25.3.)
                                           in Halle 14, Stand J50!





php::bar PHP Wiki   -   Listenarchive