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