Abrunden



  • Leider hab ich mit der Suche nichts gefunden und meine eigene Hilfe steht mir nicht zur Verfügung..
    was ich suche ist eine funktion, die einen wert abrundet.
    und zwar wird zunächst die wurzel aus einer integer-zahl gezogen:

    j=(int)sqrt(i);
    

    wird die zahl, die dabei entsteht immer abgerundet?? oder auch mal aufgerundet??

    also
    (int)sqrt(50)=7??
    (int)sqrt(63)=7, oder =8??

    und wie ist das mit der typenumwandlung zu beachten?? schliesslich muss ja eine float in eine int umgewandelt werden?!

    thx for help, KingBenny



  • Bei int-Werten wird immer die komplette Nachkommazahl abgeschnitten!
    also:

    7.1 = 7
    7.5 = 7
    7.9 = 7
    

    Tipp:
    Um kaufmännisch zu runden, muss man vor der Umwandlung in int noch 0.5 addieren.

    7.1+0.5 = 7.6 = 7
    7.5+0.5 = 8.0 = 8
    7.9+0.5 = 8.4 = 8
    


  • Wenn man nicht casten will, gibts noch die Funktion double floor(double x).
    Diese unterscheidet arbeitet aber für negative x anders, da sie immer den nächst kleineren ganzzahligen
    Wert zurückliefert.

    floor(+1.4) == +1
    floor(+5.8) == +5
    floor(-2.3) == -3
    floor(-7.9) == -8


Log in to reply