float f=6.28318; if(f==6.28318){...}, wird nicht erkannt
-
Hi nochmal,
habe jetzt das mit dem 6.28318f probiert, klappt aber auch nicht.
Es würde mich mal interessieren, was mit den Bereichen gemeint ist.
Vielleicht dieser >>-Operator?????????????????????
-
CLoop schrieb:
float f = (float) etc.klappt aber trotzdem nicht.
Na und? Das ändert ja auch überhaupt nichts an der Semantik.
Wenn du dagegen die Konstante in der if-Bedingung castest, klappt es.
-
Tut mir leid Bashar,
ich habe schonif(f==(float) 6.28318) if(f==typecast<float>(6.28318))probiert.
Klappt alles nicht.
Nur mit nem double hab ich es noch nicht probiert.
ich dacht ja, es gibt ne Funktion wie compare oder so, oder ich muss im Compiler was einstellen oder irgend so etwas.
-
float f = 6.28318;
if(f==(float) 6.28318)Das muss IMHO funktionieren (tuts bei mir auch (gcc 3.2.2)). Vielleicht kann sich da ja noch jemand zu äußern.
-
Also Bashar,
bei mir klappt das nicht, sebst nicht mit "Erstellen, Alles neu erstellen!"
Da stimmt doch irgendetwas nicht!
Vielen Dank erstmal für deine Mühe!!!!!!!!!!Vielleicht kann sich ja wirklich noch jemand anderes äußern!?
-
Meine umfangreichen Recherchen (thx @ Godot
) haben ergeben, dass das wohl auch im VC++6 und VC++7 klappt.
-
Bashar schrieb:
float f = 6.28318;
if(f==(float) 6.28318)Also dieser von Bashar aufgeführte Ausdruck ist bei mir stets wahr, sollte also funktionieren. Ich arbeite mit VS 2003.
-
Also, das Problem lag wohl daran, dass ich die 6.28318 hab berechnen lassen und dass sie, obwohl sie der Debugger angezeigt hat, so nicht im Speicher standen. Das erklärt sich wohl aus den "Fehlern" die beim abspeichern von Floats gemacht werden. Ich werd das jetzt mal mit nem double versuchen.
Habt Dank
-
-
Also mit nem double ist es ja viiiiiiiiiiiiieeel besser!