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);
-
-
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;