|
Seit der Visual Basic-Version 6 gibt es die Funktion Round,
die eine Fließkommazahl auf eine bestimmte Anzahl von
Nachkommastellen rundet.
Debug.Print Round(Zahl, Nachkommastellen)
Diese Funktion rundet jedoch streng nach mathematischen Regeln.
Dabei werden Fließkommazahlen, deren Nachkommastellen mit einer 5
enden, so gerundet, dass die letzte beibehaltene Ziffer geradzahlig
wird.
Beispiele mathematischer Rundung:
0.325 --> 0.32
aber:
0.375 --> 0.38
und deshalb auch:
3.5 -->4
und
4.5 --> 4
Im Kaufmännischen wird dagegen nach der Regel gerundet, dass
Fließkommazahlen, deren Nachkommastellen mit einer 5 enden, auf die
nächsthöhere Ziffer aufgerundet werden.
Die gleichen Beispiele wie oben in kaufmännischer Rundung:
0.325 --> 0.33
0.375 --> 0.38
3.5 -->4
4.5 --> 5
Diese kaufmännische Rundungsweise hat sich zunehmend auch in
Wissenschaft und Technik durchgesetzt. So erscheint es ein wenig
unverständlich, dass die gerade neu eingeführte Visual
Basic-Funktion nach der weitaus ungebräuchlicheren Regel rundet,
ohne dass dies ausdrücklich in der Dokumentation/Referenz
zu Round erwähnt würde.
Zum kaufmännischen Runden verwenden Sie statt dessen die
folgende Funktion - sie trägt den gleichen Namen und ist damit
code-kompatibel - d.h., Sie brauchen Ihre Aufrufe von Round nicht zu
ändern, wenn Sie generell kaufmännisch runden wollen.
Public Function Round(ByVal Number As Double, _
ByVal Digits As Integer) As Double
Round = Int(Number * 10 ^ Digits + 0.5) / 10 ^ Digits
End Function
 |
Mit dieser Ersatz-Funktion für das
VB(A)-Original runden Sie Fließkommazahlen in der
gebräuchlichen kaufmännischen Weise auf eine bestimmte
Anzahl Nachkommastellen

|
Möchten Sie jedoch ausdrücklich die VB(A)-eigene Funktion mit
mathematischer Rundung verwenden, rufen Sie dieses
"Original" einfach mit dem Zusatz "VBA." auf:
Ergebnis = VBA.Round(0.123456)

|