OKB-000269 | Kaufmännisches Runden in orgBasic

Betrifft: ab orgAnice CRM 2008

Frage:

Wie runde ich kaufmännische in orgBasic?

Lösung:

Function Runden(pdblWert As Double, plNachkommastellen As Long) As Double

‘ Rundet eine Zahl auf eine bestimme Anzahl von Nachkommastellen.

‘ Ab 5 wird aufgerundet.

Dim sZahl As String

Dim lKommaPosition As Long

Dim bAufrunden As Boolean

Dim sNachkommastellen As String

‘ Zahl in Zeichenkette umwandeln. Drei Zeichen zusätzlich

‘ als Nachkommastellen reservieren, um die Rundung zu umgehen

sZahl = Trim(Str(pdblWert, 50, plNachkommastellen + 3))

‘ Wir runden auf, wenn die drittletzte Stelle >= 5 ist

bAufrunden = Left(Right(sZahl, 3), 1) >= “5”

‘ Alle zusätzlichen Stellen können jetzt abgeschnitten werden

sZahl = Left(sZahl, Len(sZahl) – 3)

If bAufrunden Then

‘ Dezimaltrennzeichenposition bestimmen

lKommaPosition = Len(sZahl) – InStr(sZahl, “.”)

‘ Dezimaltrennzeichen ausschneiden

sZahl = Left(sZahl, Len(sZahl) – lKommaPosition – 1) & Right(sZahl, lKommaPosition)

‘ Wert um 1 erhöhen

sZahl = Trim(Str(Val(sZahl) + 1, Len(sZahl) + 1, 0))

‘ Dezimaltrennzeichen wieder einfügen

sNachkommastellen = Right(sZahl, lKommaPosition)

sZahl = Left(sZahl, Len(sZahl) – Len(sNachkommastellen)) & “.” & sNachkommastellen

End If

Runden = Val(sZahl)

End Function

Oder

Function Runden(pdblWert As Double, plNachkommastellen As Long) As Double

‘ Rundet eine Zahl auf eine bestimme Anzahl von Nachkommastellen.

‘ Ab 5 wird aufgerundet.

Runden = Lng(pdblWert * 10 ^ plNachkommastellen + 0.5) / 10 ^ plNachkommastellen

End Function