IOmanip: cout.width und cout.precision



  • Im folgenden Code werden drei Fliesskommazahlen nicht so ausgegeben wie ich mir das vorgestellt hatte. Ich habe drei Variablen vom Typ float die ich jeweils mit zwei Nachkommastellen und mit einer Zahlenbreite von 5 Zeichen (wird der Punkt mitgerechnet?) ausgegeben werden sollen.

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main ()
    {
        float f1 = 56.789;
        float f2 = 1.8109;
        float f3 = 176.688;
    
        cout.width(5);
        cout.precision(2);
    
        cout << f1 << endl << f2 << endl << f3 << endl;
    }
    

    Leider ist die Ausgaben nicht das was ich erwartet hatte:

    57
    1.8
    1.8e+002
    


  • Die Einstellungen gelten immer nur für die darauffolgende Ausgabe.

    MfG SideWinder



  • Probiers mal mit

    cout << fixed << setprecision(2);
    cout << das übliche



  • Es müsste also so gehn:

    cout << setwidth(5) << setprecision(2) << f1 << endl 
         << setwidth(5) << setprecision(2) << f2 << endl 
         << setwidth(5) << setprecision(2) << f3 << endl;
    

    oder du überschreibst dir irgendwie die Ausgabeoperatoren...
    (sollte man aber im Normalfall besser die finger von lassen)


Anmelden zum Antworten