Runden
-
Ich habe die Funktion
double Round(double Zahl, int Stellen) { Zahl*= pow(10, Stellen); if (Zahl>=0) floor(Zahl+0.5); else ceil(Zahl-0.5); Zahl/=pow(10, Stellen); return(Zahl); }
aus dem Beitrag 'Runden' von ShadeOfMine übernommen (https://www.c-plusplus.net/forum/viewtopic.php?t=39342) und habe daraus als Test
int main(int argc, char *argv[]) { double a=1.234273925283475608; float b; b=Round(a, 4); printf("%.16f\n", a); printf("%f\n", b); system("PAUSE"); return 0; }
das hier gebastelt....nur wird nicht wie in Zeile 5 festgelegt auf 4 Stellen gerundet, sondern EGAL was ich für diesen Parameter einsetze, es kommt IMMER als Ausgabe in Zeile 7 die Zahl 1.234274 heraus, auch bei 0. Woran liegt das?
-
Tausch mal Zeile 3 und 8.
Jaja, wenn mal halt zu voreilig ist
-
roflo schrieb:
Tausch mal Zeile 3 und 8.
Unsinn.
Da fehlt die Zuweisung der Rückgabewerte von floor und ceil an Zahl.
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); }
-
Ahhh vielen Dank!
Dann wärs vllt nicht schlecht das auch mal hier https://www.c-plusplus.net/forum/viewtopic.php?t=39342zu ändern