Und dein Fehler wird denke ich mal folgender sein:
NULL ist (meistens) als (void*)0 definiert, also ein ganzzahliger Typ.
Was macht C++, er wird dir dein m_Fx implizit in einen Integer casten, und da wird numal alles was <1 ist zu 0.
Also ein Vergleich mit 0.0f würde dein Problem lösen.
Ich denke du hast recht was das Problem anbelangt. Allerdings tritt es vermutlich schon weiter oben auf: Der Compiler darf (zumindest wenn er Standardkonform sein will) bei dem Vergleich im if m_Fx nicht in einen int casten, wenn m_Fx ein Gleitkommatyp ist, sondern müsste den Nullpointer (Nullpointerkonstanten sind von integralem Typ) in einen entsprechenden Gleitkommatyp umwandeln.
Die Frage ist: Von welchem Typ ist m_Fx. Ich denk mal dass m_Fx ein int ist. Dann werden schon bei der Zuweisung an m_Fx "die Kommastellen abgeschnitten".
Lösung: Mach aus m_Fx einen float. Dann musst du natürlich die, von den anderen bereits angesprochenen, Probleme beim Vergleich zweier Gleitkommazahlen berücksichtigen...