phpbar.de logo

Mailinglisten-Archive

[php] Bug oder Rechenfehler?

[php] Bug oder Rechenfehler?

Mathias Gloss mgloss at amadeus.net
Fre Dez 12 10:58:50 CET 2003


Aloha,





man könnte auch wenig 'Casten' zwichendurch, was das ERgebniss 
verbessern dürfte ...

z.b.:

echo ((int) (0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1)) 
- 1 . "\n";

... keine Ahnung was bei rauskommt, nur so ne Idee ...

also "verbessert" wird es so definitiv nicht, eher verschlechtert.
Du erhöhst den Fehler von (geschätzt) +- 0,0000001 auf +-1.

Wenn man richtige Rechenergebnisse von Zahlen mit nachkommastelle
haben möchte, dann verwende man entweder Programmiersprachen, die
das von Haus aus können (Z.B. ABAP - Datentyp P) oder programmiere
die Rechenoperationen selbst, so daß richtig gerechnet wird.

Behelfsweise kann man auch (bei wenigen Nachkommastellen) die
Zahl mit 10 hoch (Anzahl Nachkommastellen) multiplizieren, rechnen,
und hinterher wieder durch 10 hoch (Anzahl Nachkommastellen) teilen.

Z.B.

9,1 + 1,45 + 1,1234 wird dann zu:

(91000 + 14500 + 11234) / 10000 = 116734 / 10000 = 11,6734

Aufpassen muss man hier aber, daß die Zahlen alle noch als Integer
abbildbar sind.

Grüße, Mathias



php::bar PHP Wiki   -   Listenarchive