Runden
-
Hallo,
dieser Code gibt als Ergebnis 23.456 aus. Warum rundet er nicht auf 2 Stellen ?
Zudem will ich bei d = 2.4 als Ergebnis 2.40 bekommen ..?#include <iostream.h> #include <conio.h> #include <math.h> double Round(double Zahl, unsigned int Stellen) { Zahl *= pow(10, Stellen); if (Zahl >= 0) floor(Zahl + 0.5); else ceil(Zahl - 0.5); Zahl /= pow(10, Stellen); return Zahl; } void main() { double d = 23.456; cout << Round(d, 2); getch(); }
-
floor() und ceil() ändern nicht den übergebenen Parameter, sondern geben den Wert als return zurück. Also:
#include <iostream.h> #include <conio.h> #include <math.h> double Round(double Zahl, unsigned int Stellen) { Zahl *= pow(10, Stellen); if (Zahl >= 0.0) Zahl=floor(Zahl + 0.5); //geändert else Zahl=ceil(Zahl - 0.5); //geändert Zahl /= pow(10, Stellen); return Zahl; } void main() { double d = 23.456; cout << Round(d, 2); getch(); }
[ Dieser Beitrag wurde am 14.04.2003 um 14:20 Uhr von CodeWalker editiert. ]
-
hier gibts einen thread in der faq
Rundenund nutz mal die suchfunktion, dimah hat dazu noch was gepostet gehabt, glaub ich
-
Aus diesem FAQ-Beitrag habe ich den Code entnommen.
Nach der Änderung geht es, nur 4.3 liefert leider noch nicht 4.30
-
da müssen dann die format flags dran.
bin mir nicht ganz sicher, welche .. (schau mal nach)
auf jeden geht es so..#include <iostream> #include <iomanip> using namespace std; int main(){ double test=2.3; cout<<test<<endl; //nicht mit der 0 cout.setf(ios::fixed | ios::showpoint, ios::floatfield | ios::scientific); cout.precision(2); cout<<test<<endl; //jetzt mit }
-
hier ist etwas ausführlicher http://cplus.kompf.de/artikel/stream2.html