C - Genauigkeit Gleitkomma
-
Hallo,
versteh ich das eigentlich richtig, dass wenn man eine Gleitkommazahl deklariert und initialisiert
auto float f = 1.1F ; auto double d = 1.1 ; auto long double ld = 1.1L ;
die Werte intern immer die Genauigkeit des jeweiligen Datentyps haben
- und wie viele Stellen davon ausgegeben werden
hängt dann nur davon ab wie viele ich angeben im format spezifizierer %.f ?
also
float 1.2E-38 - 3.4E+38 (4 byte)
double 2.3E-308 - 1.7E+308 (8 byte)
long double 3.4E-4932 - 1.1E+4932 (10 byte)-
Bei mir habe mit sizeof( long double) 16 byte raus ist mein Wertebereich und Genauigkeit dann größer?
-
Ich habe gesehen, dass double nur positiven Wertebereich hat kann ich in diesem Wertebereich dann ein Minus davorsetzen
und erhalte dann negative Werte? -
Wie ist der Mechanismus für Gleitkommazahlen wenn man Werte auserhalb des Wertebereichs zuweist,
was passiert dann?
(Bei Ganzzahlen kenn ich den Überlauf und dass er solange vielfache des maximalen Wertes des Datenyps plus 1 addiert oder
subtrahiert bis er im Werte bereich liegt)Vielen Dank
James
- und wie viele Stellen davon ausgegeben werden
-
@JamesNguyen Schau dir die #defines in <float.h> an.
Dort stehen die Werte für deinen Compiler drin.
Wieviel Bytes tatsächlich von den 16 Byte genutzt werde, kannst du so nicht wissen.
Fließkommazahlen können auch negative Werte darstellen
Heute wird meist die IEEE 754 benutzt.Es wurde schon geschrieben, dass eine Zuweisung außerhalb des Wertebereichs UB ist.
-
ok Danke.