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