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