floatround

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag


    Ich möchte einen float runden. Der Float entsteht, indem ich ein integer teile (5 / 2 = 2.5). Es soll immer hoch gerundet werden (5 / 2 ~ 3).
    Jedoch rundet er bei 5 / 2 immer auf 2, dabei ist egal welche Methode ich benutze um runden.


    hier mal meine rundungen... habs schon einiges versucht, aber nichts hat geklappt.


    printf("normal: %d",floatround(5 / 2,floatround_round)); // 2
    printf("hoch: %d",floatround(5 / 2,floatround_ceil)); // 2
    printf("runter: %d",floatround(5 / 2,floatround_floor)); // 2


    LG
    Simon :thumbup:

  • Liegt daran,dass du nicht explizit 5 / 2 als Float-Teilung definierst. Daher wird immer 5 / 2 als Integer-Teilung genommen.5 / 2 ist in diesem Fall nämlich immer 2.


    printf("normal: %d",floatround(5 / 2.0,floatround_round)); // 3
    printf("hoch: %d",floatround(5 / 2.0,floatround_ceil)); // 3
    printf("runter: %d",floatround(5 / 2.0,floatround_floor)); // 2


    printf("normal: %d",floatround( floatdiv(5 , 2 ) ,floatround_round)); // 3
    printf("hoch: %d",floatround( floatdiv(5 , 2 ) ,floatround_ceil)); // 3
    printf("runter: %d",floatround( floatdiv(5 , 2 ) ,floatround_floor)); // 2


    Machst du aus 2 eine 2.0 , erkennt der Compiler es als Float an. Daher wird 5 durch 2.0 in dieser Teilung 2.5. Danach wird erst gerunden. Empfehle dir aber floatdiv zu benutzten.