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)

    1. Bei mir habe mit sizeof( long double) 16 byte raus ist mein Wertebereich und Genauigkeit dann größer?

    2. Ich habe gesehen, dass double nur positiven Wertebereich hat kann ich in diesem Wertebereich dann ein Minus davorsetzen
      und erhalte dann negative Werte?

    3. 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



  • @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.


Log in to reply