Runden mit der Funktion round

  • Sonstige

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von red1825.

    Runden mit der Funktion round

    Hallo,

    ich runde mit der Funktion ROUND best. Zahlen auf bzw. ab. Bei manchen Zahlen funktioniert die Funktion aber nicht.

    Bsp.:

    Quellcode

    1. Worksheets("Tabelle1").Cells(1, 1).Value = Round("26,5", 0)


    Warum rundet er auf 26 ab und nicht richtig auf 27 auf?
    Bei 27,5 funktionierts aber und bei 28,5 wieder nicht.

    An was liegt das?
    Hi!

    Hab eben ein wenig gegooglet und diese Lösung gefunden (ist aber nicht erprobt!):

    Quellcode

    1. Public Function Runden(ByVal Number As Double, _
    2. ByVal Digits As Integer) As Double
    3. Runden = Int(Number * 10 ^ Digits + 0.5) / 10 ^ Digits
    4. End Function
    5. Worksheets("Tabelle1").Cells(1, 1).Value = Runden("26,5",0)


    Jue ;)
    Vielen Dank Jue,
    funktioniert prima. Das wär das nächste gewesen, was ich gemacht hätte. Ne Eigene Routine schreiben.

    Aber es kann doch nicht sein, dass die Funktion ROUND so nen schotter ausgibt. Ist doch en fetter Bug. Unglaublich.
    Nein, das ist kein Bug. Man muss dafür allerdings wissen, dass
    die Funktion Round bei Angabe von keinen Nachkommastellen
    eine Ganzzahl zurückgibt, sich also wie CInt, oder CLng
    verhält. Und diese Runden nunmal immer auf die nächste
    gerade Zahl auf bzw. ab. Deshalb wird 26,5 zu 26 und 27,5 zu 28.
    Was für ein Schwachsinn. Unter Runden verstehe ich kaufmännisches Runden. Sprich 1-4 abrunden und 5-9 aufrunden.
    Ich habs jetzt einfach mit der folgenden Funktion programmiert:

    Quellcode

    1. Worksheet("Tabelle1").Cells(1, 1).Value = WorksheetFunction.Round("26,5", 0)


    So rundet er korrekt.