Runden auf zwei Stellen nach dem Komma
-
Moin möchte float auf zwei Stellen nach dem Komma runden. rund(x) Runden nur auf ganze Zahlen oder?
-
float f = 10.025; int i = f*100; f = i/100.0f;
alles klar ?
-
Hallo,
ein Blick in die FAQ ist meist gut investierte Zeit:
Runden
-
@HumeSikkins
Leider ist die Funktion etwas falsch. Auch wenn ich der Meinung bin, dass die Forumuser auch ein wenig nachdenken sollen, so sollte in der FAQ trotzdem der richtige Code stehenWas zu ändern wäre:
// Original:
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; } // 1. Änderung ohne Kommentar double Round(double Zahl, unsigned int Stellen) { Zahl *= pow(10, Stellen); if (Zahl >= 0) Zahl = floor(Zahl + 0.5) else Zahl = ceil(Zahl - 0.5); Zahl /= pow(10, Stellen); return Zahl; } // 2. Änderung: Einführen der Potenzgesetze double Round(double Zahl, int Stellen) { Zahl *= pow( 10, Stellen); if (Zahl >= 0) Zahl = floor(Zahl + 0.5) else Zahl = ceil(Zahl - 0.5); Zahl *= pow(10, -Stellen); return Zahl; } // 3. Änderung: Rundung überarbeitet double Round(double Zahl, int Stellen) { Zahl *= pow( 10, Stellen); Zahl = floor(Zahl + 0.5) Zahl *= pow(10, -Stellen); return Zahl; } // 4. Änderung: Zusammenfassen double Round(double Zahl, int Stellen) { return floor(Zahl * pow( 10, Stellen) + 0.5) * pow(10, -Stellen); } // 5. Änderung: Laufzeitverhalten verbessern double Round(double Zahl, int Stellen) { double v[] = { 1, 10, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8 }; // mgl. verlängern return floor(Zahl * v[Stellen] + 0.5) / v[Stellen]; }
[ Dieser Beitrag wurde am 20.06.2003 um 14:14 Uhr von RenéG editiert. ]
-
@HumeSikkins
Nachtrag:
'tschludigung, sollte die Änderungen doch lieber an Shade weiterleiten
-
Gibt es da auch irgendeine Begründung zu? Warum war der ursprüngliche Code fehlerhaft?