Float, Double und Long Double



  • Ich bemerke gerade ein Problem, dass sich erst jetzt herausgestellt hat.
    Und zwar habe ich ein recht simples Programm geschrieben.
    Ich gab immer wieder 20 Stellen nach dem Komma ein und der Compiler spuckte mir immer wieder nur 5 Stellen nach dem Komma aus.
    (Ich weiß, ich hab das Programm umständlich geschrieben ! ^^)

    #include<iostream>
    #include<conio.h>
    using namespace std;
    
    int main()
    {
        float k1;
        double k2;
        long double k3;
    
        cout<<"Gib bitte 3 mal die selbe Kommazahl mit 20 Stellen ein !"<<endl;
        cin>>k1;
        cin>>k2;
        cin>>k3;
    
        cout<<"Float"<<endl;
        cout<<k1<<endl;
        cout<<" "<<endl;
        cout<<"Double"<<endl;
        cout<<k2<<endl;
        cout<<" "<<endl;
        cout<<"Long Double"<<endl;
        cout<<k3<<endl;
        cout<<" "<<endl;
    
        getch();
    }
    

    THX im Voraus und LG Flo


  • Administrator



  • Meine eigentliche Frage war jetzt:

    Warum spuckt er mir immer nur 5 Zahlen nach dem Komma aus ?
    Hab ich was vergessen ???
    Hab ein Black-Out... xD

    Gruss



  • OKay, warst schneller als ich !
    Vielen Dank und Gruss



  • Neben der Ausgabe/Formatierung ist natürlich die Genauigkeit von double auch begrenzt. Typischerweise sind doubles nur auf etwa 15 Dezimalstellen (insgesamt, einschließlich die vor dem Komma) genau. 10 Stellen werden garantiert. Der C++ Standard verweist hier auf den C Standard, der sagt, dass das DBL_DIG -Makro aus <float.h> mindestens zu einer Ganzzahlkonstante mit dem Wert 10 expandiert. Bei long double sind's auch mindestens 10, bei float mindestens 6. Viel mehr bieten 32bit IEEE-754 single floats auch nicht an.


Log in to reply