Tom: Vergleich von int und float mit == gibt false

Beitrag lesen

Hello,

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.

Was ich versucht habe:

if ((float) $int[0] == (float) $float[0]) {
  // Code hier wird nie ausgefuehrt
}

Die Idee mit dem Casten ist im Prinzip schon ganz gut, nur hast Du in die falsche Richtung casted.

if ((int) $int[0] == (int) $float[0])
  {
    // Code sollte jetzt bei Bedarf aus ausgefuehrt werden.
  }

So würden die eventuell vorhandenen Nachkommastellen in der x-ten Stelle abgeschnitten werden beim Float-Wert. Der Int hat ja sowieso keine.

Anders herum würde der Int vermutlich sowieso automatisch durch integrale Promotion in den Float überführt werden, zumindest wenn es sich um eine in C/C++, Pascal oder ähnlichen Hochsprachen geschriebene Applikation handelt. Ich denke, PHP macht das auch so.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de