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 😛


Log in to reply