Hallo mal wieder,
ich hab' folgende Frage:
werden Fließkommarechnungen/Konvertions anders ausgeführt, wenn das Programm im Debug-Modus kompiliert ist, wie wenn es im Release-Modus kompiliert ist.
Denn bei mir passiert folgendes:
|
Quellcode
|
1
2
3
4
|
float f1, f2;
// f1 und f2 erhalten Werte
f1 = f1 * f2;
sprintf(dummy,"%d",(int)f1);
|
Im String 'dummy' steht nach DEBUG-Kompilation korrekterweise '1', denn die Berechnungen ergeben das auch (f1 * f2 = 1), doch im ReleaseMode kommt '0' raus! Zwar hat 'f1' definitiv auch den Wert '1.000000...', aber nach dem int-Konvertieren kommt '0' raus, anstatt, wie im DEBUG, '1'.
Nach stundenlangem Forschen (Scheiße, das im RELEASE nicht debuggt werden kann
) habe ich herausgefunden, dass wenn 0.0000001 zu 'f1' addiert wird, nach dem Konvertiern doch '1' rauskommt. Also ist anzunehmen, dass 'f1' nicht genau den Wert '1' hat, sondern ein bisschen weniger, ohne optischen Unterschied.
Doch nun die Frage:
Warum ist das im DEBUG-Mode anders? Wird da ungenauer gerechnet?