Problem mit fabs und float-Format

30/03/2010 - 15:58 von Curtis Newton | Report spam
Hallo,

ich habe hier zwei float-Zahlen f1 und f2
Im Debugger sind
f1=0.00000000
f2=-4.2201683e+037

Die absolute Differenz zwischen beiden, bestimmt mit
float dfc=fabs(f2-f1);
ist
7.6293945e-005

Hmmm. Làsst mich doch etwas ratlos zurück. Ich hàtte als Differenz
4.2201683e+037 erwartet. Woher kommt das? Das ist doch bestimmt wieder
so eine IEEE-Floatingpoint-Repràsentation-Fallgrube, oder?

Ich bin hier auf einem 32bit-Windows, und FLT_MAX ist 3.402823466e+38F

C.

Bye
 

Lesen sie die antworten

#1 Marcel Müller
30/03/2010 - 19:08 | Warnen spam
Hallo!

Curtis Newton wrote:
ich habe hier zwei float-Zahlen f1 und f2
Im Debugger sind
f1=0.00000000
f2=-4.2201683e+037

Die absolute Differenz zwischen beiden, bestimmt mit
float dfc=fabs(f2-f1);
ist
7.6293945e-005



Mit den dargestellten Codezeilen làsst sich der Fehler erwartungsgemàß
nicht reproduzieren. Bitte ein /vollstàndiges/ Programm posten, mit dem
sich der Fehler reproduzieren làsst.

Hmmm. Làsst mich doch etwas ratlos zurück. Ich hàtte als Differenz
4.2201683e+037 erwartet. Woher kommt das? Das ist doch bestimmt wieder
so eine IEEE-Floatingpoint-Repràsentation-Fallgrube, oder?



Gaube ich nicht. Eher undefined behavior irgendwo anders im Code.


Marcel

Ähnliche fragen