Ergebnis falsch oder ohne Nachkommastellen (trotz float)



  • Hallo zusammen 🙂 ,
    ich bin noch ganz neu bei C++ und versuche mich an einer Aufgabe: LängexBreitexPreis=gr_preis.

    Mein Code funktioniert allerdings nur, wenn der Preis eine Ganzzahl ist, ansonsten gibt es ein flasches Ergebnis oder eines ohne Nachkommstellen.

    Mit float habe ich alle Variablen versucht umzuwandeln, dennoch bleibt das Ergebnis.

    Kann mir jemand helfen/den Fehler nennen?

    Schon mal herzlichen Dank.

    Anbei der Code:

    /* ##############################################
    Variablen
    ############################################### */

    #include <iostream>

    using namespace std;

    int main ()

    {
    unsigned short laenge, breite;
    float preis, gr_preis;

    //Rechnung

    cout<<"Grundstueckspreisberechnung\n Bitte geben sie die Laenge an:"<<endl;
    std::cin>>laenge;
    cout<<"\n Geben sie nun die Breite an:"<<endl;
    std::cin>>breite;
    cout<<"\n Geben sie nun den Preis an:"<<endl;
    std::cin>>preis;
    gr_preis = ((float)laenge*(float)breite)*preis;
    cout<<"\n Der Preis ist "<<gr_preis<<""<<endl;

    return 0;
    }



  • Probier mal mit

    #include <iomanip> 
    ...
    std::cout << std::setprecision(3) << gr_preis;
    


  • freewibes schrieb:

    Hallo zusammen 🙂 ,
    ich bin noch ganz neu bei C++ und versuche mich an einer Aufgabe: Länge*Breite*Preis=gr_preis.

    Mein Code funktioniert allerdings nur, wenn der Preis eine Ganzzahl ist, ansonsten gibt es ein falsches Ergebnis oder eines ohne Nachkommstellen.

    [...]

    /*  ##############################################
    Variablen
    ############################################### */
    
    #include <iostream>
    
    using namespace std;
    
    int main ()
    {
        unsigned short laenge, breite;
        float preis, gr_preis;
    
        //Rechnung
        cout<<"Grundstueckspreisberechnung\n Bitte geben sie die Laenge an:"<<endl;
        std::cin>>laenge;
        cout<<"\n Geben sie nun die Breite an:"<<endl;
        std::cin>>breite;
        cout<<"\n Geben sie nun den Preis an:"<<endl;
        std::cin>>preis;
        gr_preis = ((float)laenge*(float)breite)*preis;
        cout<<"\n Der Preis ist "<<gr_preis<<""<<endl;
    
        return 0;
    }
    

    Hallo freewibes,

    Willlkommen im C++-Forum.
    Der Code funktioniert, solange Du bei laenge und breite Ganze Zahlen verwendest. Beispiel:

    Grundstueckspreisberechnung
     Bitte geben sie die Laenge an:
    20
    
     Geben sie nun die Breite an:
    31
    
     Geben sie nun den Preis an:
    1.92
    
     Der Preis ist 1190.4
    

    mache am besten alle Variable zu double , auch laenge und breite ; dann kannst Du auch den cast in Zeile 21 weglassen. Derartige casts gelten als schlechter Stil.
    double ist bei C++ der Defaulttyp für Fließkommazahlen.



  • Super - alles funktioniert.

    An meinem Stil werde ich noch arbeiten. 👍

    Schönes Wochenende.


Log in to reply