Matti Mäkitalo: Einfache Rechnung in PHP wird als Falsch ausgegeben?!

Beitrag lesen

Hi,

und um mein Posting-Triple abzuschließen:
"man" vergleicht floats nicht direkt miteinander. Floats (bzw. allgemein die Fließkommadarstellung) sind nicht genau (siehe z.B.  Wikipedia: Gleitkomma).

Im Internet sind viele "korrekte" Wege aufgezeigt, Fließkommazahlen direkt miteinander zu vergleichen.
Üblich wäre eine erlaubte Fehlertoleranz

$err = 1E-3;  
if (abs($var - $var1) < $err) {  
  echo "Zahlen sind fast gleich\n";  
}  

oder der ganze Verzicht auf Fließkommazahlen.
So könnte man Geldbeträge statt in Euro mit Cents als Nachkommastellen und Cent abspeichern und dies dann als integer speichern (wobei man trotzdem auf Divisionen achten muss, damit man nicht implizit floats erhält). Allgemein ist Division recht gefährlich, es ist meist besser, darauf zu verzichten und beim Vergleich jeweils die Gegenseite mit den ursprünglichen Nennern zu multiplizieren.

Bis die Tage,
Matti