float Zahl ändert sich durch Formatierung?



  • Hallo,
    auch ich ein Neuling hier....
    Kann mir jemand erklären, weshalb sich die Zahl im Nachkommabereich ändert?

    Danke schon mal für die Mühe...
    Jörg

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float f1 =15000.23;
        printf("\nZahl wird formatiert: %0.6f", f1);    // 4 Nachommastellen, bei Int Zahlen = 4 Stellen
        // Ausgabe erfolgt als 15000.230469!
        return 0;
    }
    


  • 15000.23 hat 7 signifikante Dezimal-Stellen, von denen jede bis zu log(10)/log(2)3.32 Bits repräsentiert.
    Insgesamt 7 x 3.32 ~ 23.2 Bits Information.

    23.2 Bits Information in einer Mantisse mit 23 Bit (float) zu codieren wird dann im allgemeinen
    etwas knapp 😃

    sprich, der Computer muß in der internen Darstellung die Mantisse auf 23 Bits runden.



  • aber dann versteh ich eines nicht.
    Lt. meinem Buch geht der Zahlenbereich von float von -3.40e+38 bis +3.40e+38.
    Dann hilft mir diese Angabe doch gar nicht weiter?



  • nö, für die Genauigkeit hilft die Angabe des maximalen Exponenten nicht viel weiter, da hast du recht. Dafür ist die Mantissenbreite verantwortlich.

    3.4e+38 ~ 2^128, und das kommt daher, daß der Exponent mit 8 Bit gespeichert
    wird.



  • Gut, werd ich mich mit dem Thema mal eingehender beschäftigen.
    DankeDir!



  • gerne.


Log in to reply