Moin Mr. K.!
It's not a bug, it's a feature! ;)
Ich hole mal ein wenig aus:
Round() muss ja "nur" rechnen, wenn die relevante Nachkommastelle > 0 ist. (0 bleibt ja gleich).
Daher wird bei nur vier Möglichkeiten (1 bis 4) abgerundet,
während bei fünf(!) Möglichkeiten (5 bis 9) aufgerundet wird.
Daher wendet Round() das symmetrische Runden an (auch bekannt als Bankers Rounding)!
Zitat aus Wikipedia:
"Ist die Ziffer an der ersten wegfallenden Dezimalstelle lediglich eine 5 (oder eine 5, auf die nur Nullen folgen), so wird derart gerundet, dass die letzte beizubehaltende Ziffer gerade wird."
https://de.wikipedia.org/wiki/Rundung
Insofern alles "richtig", was Round() da treibt.
Application.Round() hingegen wendet das "normale" kaufmännische Runden an.
Gruß Ralf
|