beliebige Zahlen auf beliebige Stellen aufrunden



  • Hallo
    ich möchte beliebige Zahlen auf beliebige Stellen aufrunden können.
    zB 22 aufgerundet auf 3-> 24
    12 aufgerundet auf 5 -> 15 usw.

    Aufgerufen werden soll die Funktion so:
    cout << runde (22,3);
    erster Parameter: Zahl, zweiter P: 'Rundefaktor'

    Folgendes habe ich gebaut:

    double runde (double zahl, int rundefaktor)
    {
    /*
    zahl -=  zahl % rundefaktor;
    zahl += rundefaktor;
    //geht nicht, modulo mag kein double
    //Formel nach http://baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/temp/fuenfertest
    */
    
    //falsche Ergebnise:
    //Formel nach einem gefundenem Beitrag aus dem Forum
    zahl *= rundefaktor;
    zahl += 1;
    ceil (zahl);
    zahl /= rundefaktor;
    return zahl;
    }
    

    Kann mir jemand helfen?



  • return std::ceil(zahl / rundefaktor) * rundefaktor;
    


  • Ach ja, und % für doubles ist std::fmod (auch in <cmath>), aber ich finde die ceil-Version schöner.



  • danke, werds gleich mal testen.


Anmelden zum Antworten