phpbar.de logo

Mailinglisten-Archive

[php] Rechenfehler

[php] Rechenfehler

Gloss Mathias php_(at)_phpcenter.de
Fri, 18 Jan 2002 13:10:46 +0100


Aloha,

> Von: 	Michael Hinrichs[SMTP:magic_(at)_blitztrade.de]
>
> ich bin gerade über einen Rechenfehler bzw. Rundungsfehler gestolpert.
....

> Fall 1 ergibt für c 0.86999999999999, Fall 2 0,88.
>
> Jetzt frag ich nicht, wie ich das Problem lösen kann (einfach runden),
> sondern warum es auftritt.
>
...

> Kann man sich denn heutzutage auf nix mehr verlassen ;-))
>
Doch das kann man .... wenn man sich auf eine solide Ausbildung in der
EDV berufen kann :-)

Grundsätzlich ist es so, daß die heute üblichen CPUs Integer
(== Ganze Zahlen in einem definierten Bereich) oder Gleitkommazahlen
direkt verarbeiten können. Beides wird nicht im Dezimalsystem, sondern
im Binärsystem durchgeführt.

==> Die von dir erwähnten Rechenschritte sind direkt mit keiner CPU
       möglich.
==> Beide werden als Gleitkommaoperation ausgeführt.
==> Es gibt häufig Rundungsfehler (bei deinem Fall 2 zufällig nicht ;).

Auch die Verwendung der bc* - Funktionen (falls vorhanden) wird bei deinem
ersten Fall nur mehr 9999er hinter dem Komma liefern, nützt dir also auch
nichts ;-(

Zum Trost gibts aber zum Ausgeben sinnvoller Ergebnisse funktionen wie
number_format() und sprintf() / printf()

Grüße, Mathias


php::bar PHP Wiki   -   Listenarchive