Runden



  • Es gibt std::floor und std::ceil in <cmath>.

    Wenn du damit aber mathematisch runden willst (bis 4 abwärts, ab 5 auf die nächste Zehnerstelle) musst du dir was kleines basteln:

    if(zahl%10<5)
        zahl = std::floor(zahl);
    else
        zahl = std::ceil(zahl);
    

    Oder so 😃

    Edit...
    

    Sollte das Forum sowas nicht verhindern?



  • Es gibt std::floor und std::ceil in <cmath>.

    Wenn du damit aber mathematisch runden willst (bis 4 abwärts, ab 5 auf die nächste Zehnerstelle) musst du dir was kleines basteln:

    if(zahl%10<5)
        zahl = std::floor(zahl);
    else
        zahl = std::ceil(zahl);
    

    Oder so 😃



  • oder hat jemand ne idee wie sowas aussehen könnte, es reicht mir schon nur auf ganze zahlen zu runden.

    edit..
    ups zu spät gesehen



  • wie benutzt man denn std::floor und std::ceil ?

    und wie runden die?

    The-Kenny schrieb:

    if(zahl%10<5)
        zahl = std::floor(zahl);
    else
        zahl = std::ceil(zahl);
    

    was bedeutet %10?



  • Yazoo schrieb:

    oder hat jemand ne idee wie sowas aussehen könnte, es reicht mir schon nur auf ganze zahlen zu runden.

    std::floor(zahl+0.5);
    


  • Yazoo schrieb:

    was bedeutet %10?

    rest von 10 (stichwort: "Modulo")

    FAQ - Runden



  • wie funktionieren denn nun die funktionen std::floor und std::ceil?



  • std::ceil rundet auf die nächst höhere Zehnerstelle, std::floor auf die nächst niedrigere.



  • Yazoo schrieb:

    wie funktionieren denn nun die funktionen std::floor und std::ceil?

    Das wissen nur die Compiler-Entwickler - für dich ist wichtig, was sie machen 😃

    floor() rundet ab zur nächstkleineren ganzen Zahl, ceil() rundet auf.



  • thx



  • The-Kenny schrieb:

    Es gibt std::floor und std::ceil in <cmath>.

    Wenn du damit aber mathematisch runden willst (bis 4 abwärts, ab 5 auf die nächste Zehnerstelle) musst du dir was kleines basteln:

    if(zahl%10<5)
        zahl = std::floor(zahl);
    else
        zahl = std::ceil(zahl);
    

    Oder so 😃

    Oder doch nicht so, denn dein Code ergibt keinen Sinn.
    Entweder zahl ist ein Fließkommawert (float, double, long double) und dann funktioniert der Modulo-Operator % nicht (Compiler-Fehler) oder aber es ist schon eine ganze Zahl und dann können auch std::floor bzw std::ceil nicht mehr runden.

    Für positive Zahlen ist die Antwort von Nanyuki richtig:

    std::floor(zahl+0.5);
    

    Für reine Ausgaben sollte man das Runden aber dem System überlassen:

    #include <iomanip>
    
    std::cout << std::setprecision(2) << zahl << endl;
    

Anmelden zum Antworten