(Hallo|Hi(ho)|Nabend) X-Ray,
In meinem Script vergleiche ich einen Float-Wert mit einem Integer-Wert. Beide Werte sind in einem Array abgelegt. Beide Werte sind eine glatte Zahl. Dennoch gibt == immer false zurück.
if ($int[0] == $float[0]) {
// Code hier wird nie ausgefuehrt
}
if ((float) $int[0] == (float) $float[0]) {
// Code hier wird nie ausgefuehrt
echo $int[0]."|".$float[0];
// Gibt "118|118" aus
>
> Wo kann hier das Problem liegen?
Du vergleichst [Äpfel](http://de.wikipedia.org/wiki/Integer_%28Datentyp%29) mit [Bir](http://de.wikipedia.org/wiki/Gleitkommazahlen)[nen](http://de.wikipedia.org/wiki/IEEE_754#Zahlenformate_und_andere_Festlegungen_des_IEEE_754-Standards). Beide fallen zwar unter [Obst](http://de.wikipedia.org/wiki/Zahl#Weitere_Zahlenmengen), haben aber unterschiedliche Eigenschaften.
Echo rundet bei der Ausgabe einer Gleitkommazahl, stellt also nicht den wirklich gespeicherten Wert dar. Das hilft dir nicht weiter.
Du hast genau zwei Möglichkeiten:
1\. Du [rundest die Gleitkommazahl auf einen ganzen Wert](http://www.php.net/manual/en/function.round.php) und vergleichst dann praktisch zwei Ganzzahlen.
2\. Du wandelst die Integer-Zahl in eine Gleitkommazahl um und vergleichst dann zwei Float-Werte.
Hierbei hilft allerdings der Operator "==" nicht mehr.
Das macht dir das PHP-Handbuch auch mit dem [Kommentar "Never never never compare floats for equality!"](http://www.php.net/manual/en/language.types.float.php#30198) mehr als deutlich.
[Zwei Gleitkommazahlen gelten als "gleich", wenn ihre Differenz einen festgelegten Wert nicht überschreitet](http://www.php.net/manual/en/language.types.float.php#35591).
Diese Differenz nennt man [Fehlerschranke](http://de.wikipedia.org/wiki/Fehlerschranke#Softwareentwicklung_.28Numerik.29), kennzeichnet sie mit dem griechischen Buchstaben Epsilon,
und du darfst sie selbst festlegen -- [das solltest du aber mit Bedacht tun](http://www.php.net/manual/en/language.types.float.php#71167).
MffG
EisFuX
--
[Nichts ist dem Zuwachs an Wissen förderlicher, als nach einer Antwort korrigiert zu werden.](http://community.de.selfhtml.org/zitatesammlung/zitat119)