September 2009
Intermediate to advanced
912 pages
48h 11m
German
Sie möchten prüfen, ob zwei Fließkommazahlen gleich sind.
Benutzen Sie einen kleinen Delta-Wert und überprüfen Sie, ob die Zahlen innerhalb dieses Deltas gleich sind:
$delta = 0.00001;
$a = 1.00000001;
$b = 1.00000000;
if (abs($a - $b) < $delta) { /* $a und $b sind gleich */ }Fließkommazahlen werden in binärer Form gespeichert, wobei es für Mantissen und Exponenten nur jeweils eine endliche Anzahl von Bits gibt. Sie bekommen einen Overflow-Fehler, wenn diese Bits überschritten werden. Als Folge davon glaubt PHP manchmal nicht (wie andere Programmiersprachen auch), dass zwei gleiche Zahlen wirklich gleich sind, da sie sich vielleicht ganz am Ende unterscheiden.
Um dieses Problem zu vermeiden, ...