VBspeed /
Articles /
Banker's rounding

VBspeed © 200010, updated: 30May2002 
Banker's rounding 
Banker's rounding: the value is rounded to the nearest even number. Also known as "Gaussian rounding", and, in German, "mathematische Rundung".

Standard rounding: the value is rounded to the nearest number (be it odd or even). In German it is known as "kaufmännische Rundung".

VB6's native Round() function uses Banker's rounding, surprising to many since Standard rounding is more common ...

"Banker's rounding" is not bad
A remark by René Rhéaume, 21.09.01
... some people think "Banker's rounding" is bad,
but it is not the case. This "Banker's" method uses the Gauss
rule that if you are in an perfect half case, you must round to the
nereast digit that can be divided by 2 (0,2,4,6,8). This rule is
important to obtain more accurate results with rounded numbers after
operation.
Now, an example :
2 digits 2 digits
Unrounded "Standard" rounding "Gaussian" rounding
54.1754 54.18 54.18
343.2050 343.21 343.20
+106.2038 +106.20 +106.20
========= ======= =======
503.5842 503.59 503.58
Which one is nearer from unrounded result ? The "Gaussian" one
(Difference of 0.0042 with "Gaussian/Banker" and 0.0058
with "Standard" rounding.)
Another example with halfround cases only:
1 digit 1 digit
Unrounded "Standard" Rounding "Gaussian rounding"
27.25 27.3 27.2
27.45 27.5 27.4
+ 27.55 + 27.6 + 27.6
======= ====== ======
82.25 82.4 82.2
Again, the "Gaussian" rounding result is nearer from the unrounded
result than the "Standard" one.
René Rhéaume
rener@moncourrier.com
Jump to Round