Zahlen immer aufrunden

  • Moin,


    ich kann aus deiner Frage und den 3 Beispielen keinen logischen Zusammenhang darstellen, da Fragestellung und Beispiele nicht zueinander passen.


    Du schreibst, du möchtest immer aufrunden aber nur Zeile 1 in deinem Beispiel rundet nach oben. Die anderen beiden sind entgegengesetzt, also simpel abgeschnitten (meinetwegen sogar abgerundet).


    Bitte formuliere die Frage neu oder liefere bessere Beispiele.


    Anhand der jetzigen Beispiele kann man für die letzten beiden Zeilen simpel die Funktion INT(x) verwenden. Die erste Beispielzeile paßt dann aber nicht dazu.

  • Das sieht schon anders aus =)


    Was mir noch fehlt ist eine Aussage über die Kommastellen und Negativwerte. Die Formel kann man dann vereinfachen. Wobei bei Negativwerten das Aufrunden ja in die Gegenrichtung läuft, also -2,1 wäre aufgerundet -2 statt -3. Also lasse ich das mal weg, da hierzu keine Aussage war.


    Also fasse ich jetzt mal zusammen:


    -> es soll immer aufgerundet werden, egal wie gross der Nachkommaanteil ist und egal ob die Zahl postiv oder negativ ist.


    Dann geht das z.B. so:


    x sei die zu rundende Zahl
    y sei das Ergebnis


    Variante a) hier simpel mit Vergleichsoperator gelöst


    If (x > INT(x)) Then
    y = INT(x+1)
    Else
    y = x
    End If


    Variante b)


    Mit den Funktionen Fix() und Fraction() bekommt man Anteile rechts und links vom Komma separat, ein wenig selbst Probieren möchte ich dir aber nicht wegnehmen =)

  • schade, dass es keine Funktion dafür gibt. Das mit dem Vergleichen und dann plus 1 habe ich bereits ausprobiert und das funktioniert auch. Ich dachte nur vielleicht gibt es eine Funktion dafür um alles ein wenig zu komprimieren.

  • Also warum sollte es dafür eine Funktion geben. ich kann mir gerade ehrlich keinen Einsatzzweck vorstellen wo man dies in dieser Art und weise benötigt.


    Aber das ganze lässt sich mit der Round Funktion auch noch vereinfachen:


    Round(Wert + 0.5)

  • Den Tipp verzeih ich dir mal taurec (weils schon so spät ist heute).


    Ich glaub nämlich nicht dass du das ernst meinst, dass z.B. eine 1,0 auch schon zur 2 aufgerundet werden soll :D


    (deswegen bei meinem Beispiel die Anmerkung mit den Nachkommastellen - wenn die fix vorgegeben werden könnte man deinen Tipp in abgewandelter Form wieder anbringen - aber so: no way ^^)

  • Wenn ich als Wert eine 1.0 habe und zu dieser 0.5 addiere, dann lande ich bei 1.5 und 1.5 wird bei Round auf 3 aufgerundet.


    Ich hatte nur den zweiten Parameter vergessen:


    Round(Wert + 0.5, 0)


    *Grins


    Und an der Uhrzeit kann es nicht liegen, hier ist es erst kurz nach 2 mittags

  • Zitat

    von taurec am 21.01.2008 20:02:41


    Wenn ich als Wert eine 1.0 habe und zu dieser 0.5 addiere, dann lande ich bei 1.5 und 1.5 wird bei Round auf 3 aufgerundet.


    3 ja nun schon gar nicht. Stell doch bitte mal die Bierflasche weg ^^ Einigen wir uns mal kurz, dass du 2 schreiben wolltest.


    Aber selbst mit 2 oder 3 ... wenn ich eine 1,0 habe dann soll die ja schließlich eine 1,0 bleiben und überhaupt nicht gerundet werden. Nur Werte größer als 1 sollen ja aufgerundet werden ^^


    Und daran ändert auch der 2. Parameter nix *g*


    Also nee - erst 14 Uhr und schon so besoffen *fg*

  • Ja sollte natürlich 2 heissen. Typischer Fall von daneben getippt.


    Mit der 1 hast du natürlich recht, aber dann muss man eben die zu addierende Zahl entsprechend wählen, damit dann aufgerundet wird, d.h. also bei Zahlen mit 2 Nachkommastellen wäre das 0.49.
    Das Grundprinzip bleibt aber das gleiche und wäre eben auch nur eine Zeile Code

  • Ich bezweifle ja gar nicht dass man 1 Codezeile machen könnte wenn man wüßte wieviele Nachkommastellen maximal da sind.
    :wuet:


    Das ist doch genau der Punkt weswegen ich jetzt mittlerweile seit Posting Nr. 4 auf den Nachkommastellen rumhacke.
    :wuet: :wuet:


    Und seit Posting Nr. 7 dir versuche klarzumachen dass es so nicht geht wenn man variable Nachkommastellen hat.
    :wuet: :wuet: :wuet:


    Achja - ich schließ dat jetz ma ab. Am ursprünglichen Ergebnis aus Posting 4 hat sich ja nichts geändert.