Wer vergleicht denn zwei floats mit "=="?!
Zuviele...
Außerdem macht der Compiler aus einer solchen Division sowieso eine Multiplikation. Es ist völlig egal was man schreibt.
Ich habe es gerade mal überprüft... Der MSVC macht es in dem Fall tatsächlich.
Verlassen kann man sich darauf aber nicht, weil der Compiler durch IEEE 754 bei Standardeinstellungen leicht übervorsichtig ist. Umformungen die Mathematisch kein Problem sein sollten werden nicht durchgeführt, weil es zu anderer Rundung oder Probleme bei Unendlichkeiten/NAN führen würde. "
/ 3.0" wird zum Beispiel nicht automatisch in "
* (1.0 / 3.0)" umgeformt, außer wenn man explizit "fast math" aktiviert. In der Regel schadet es nicht es gleich richtig hinzuschreiben. Auf mathematische Float-Umformungen würde ich mich deshalb besser nicht verlassen.
Ich halte es allerdings für unwahrscheinlich, dass das das Problem des Fragestellers ist. Wenn es so wäre, sollte er auch über seine Vorgehensweise nachdenken, weil vermutlich noch irgend etwas anderes schiefläuft. Vielleicht mal profilen? Ein derartiger Einbruch dürfte durch soetwas Grundlegendem bei einem halbwegs normalen Spiel niemals ausgelöst werden.