sergej: Wie Runde ich mit C++?

hi !!!

Ich kann in meiner Docu leider keine Befehle für Runden von Zahlen finden.

gibt es sowas wie "round (a)" oder so?

Hilfe

S.K.

  1. Hallo sergej,

    gibt es sowas wie "round (a)" oder so?

    ja (aber nur als selfc++ Funktion :-) unter Verwendung von math.h)

    int round(float x)
    {
      return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);
    }

    Gruß
    Hans-Peter

    1. Hallo sergej,

      Hallo Hans-Peter :)

      gibt es sowas wie "round (a)" oder so?

      ja (aber nur als selfc++ Funktion :-) unter Verwendung von math.h)

      int round(float x)
      {
        return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);
      }

      Gruß
      Hans-Peter

      ok , thnx

      S.K.

    2. Hoi,

      int round(float x)
      {
        return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);
      }

      das ist doch mal ein tolles Beispiel fuer 'inline' ;-)

      inline int round(float x) {
        return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);
      }

      Gruesse,
       c.j.k

    3. Hallo,

      return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);

      Na, da denke ich doch, daß das gute alte
      return(floor(x+0.5));
      doch noch effizienter ist;-)

      Grüße
       Klaus

      1. Hi,

        return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);

        Na, da denke ich doch, daß das gute alte
        return(floor(x+0.5));
        doch noch effizienter ist;-)

        ja klar. Das war auch alles nur Quick-and-Dirty. Was aber wirklich effizienter ist in C/C++, wage ich mal nicht zu sagen. Am Source-Code kann man es jedenfalls nicht immer erkennen. Es kommt auch auf den Definitions- und Wertebereich an, auf den Typ des Rückgabewertes (floor() etc. liefert - soweit ich weiß - double und nicht int) und so weiter. Aber das krigt der der sergej schon alles selber geregelt.

        Ciao
        Hans-Peter

      2. Moin moin!

        return (fmod(x,1.0) >= 0.5) ? ceil(x) : floor(x);

        Na, da denke ich doch, daß das gute alte
        return(floor(x+0.5));
        doch noch effizienter ist;-)

        Vor allem funktioniert es auch mit negativen Zahlen, im Gegensatz zur oberen Variante. ;-)

        So long

        --
        There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence.
            -- Jeremy S. Anderson