2.2 Fließkommazahlen vergleichen
Problem
Sie möchten prüfen, ob zwei Fließkommazahlen gleich sind.
Lösung
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 */ }
Diskussion
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, ...
Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.