Rundungsverhalten bei float
Verfasst: Sa Feb 13, 2021 8:04 am
Hi,
ich muss das Verhalten bei einer Zuweisung einer bzgl. der Digits zu langen Fliesskommazahl an eine float-Variable erklären.
Also
Definition+ Initialisierung
Wenn ich mir mit dem Debugger anschaue was im Speicher gelandet ist, sieht das so aus.
Das ist jetzt auf den ersten Blick seltsam, ich hätte 908340598. erwartet.
Es scheint was mit der Anzahl der Digits zu tun zu haben ... in der float.h findet man
Kann jemand erklären, wie das zustande kommt.
Anmerkung:
Habe es mit VS2019 und gcc getestet, das Verhalten ist mit beiden Compilern gleich.
Wäre klasse, wenn mir da jemand auf die Sprünge helfen könnte.
Gruß
Marcus
ich muss das Verhalten bei einer Zuweisung einer bzgl. der Digits zu langen Fliesskommazahl an eine float-Variable erklären.
Also
Definition+ Initialisierung
Code: Alles auswählen
float x = 908340598.3459387458374;
Code: Alles auswählen
908340608.
Es scheint was mit der Anzahl der Digits zu tun zu haben ... in der float.h findet man
Code: Alles auswählen
#define FLT_DECIMAL_DIG 9 // # of decimal digits of rounding precision
Anmerkung:
Habe es mit VS2019 und gcc getestet, das Verhalten ist mit beiden Compilern gleich.
Wäre klasse, wenn mir da jemand auf die Sprünge helfen könnte.
Gruß
Marcus