Why does Round(34.385,2) return 34.38?
Shouldn't it return 34.39?
In elementary school, I learned there was only one right answer to the
question "What is 3.445 rounded to two decimal places?" Nowadays, I
know better. : )
What you're seeing--3.445 rounding to 3.44--is "round to nearest even"
behavior. Numbers on the cusp round to the nearest even number. (I
understand that some applications round to the nearest odd number, but
I haven't seen any of them firsthand.)
Here's why you might want to do such a seemingly silly thing. In
rounding to two decimal places . . .
3.440 <truncated>
3.441 <round down>
3.442 <round down>
3.443 <round down>
3.444 <round down>
3.445 <???>
3.446 <round up>
3.447 <round up>
3.448 <round up>
3.449 <round up>
3.450 <truncated>
Four intermediate values round to 3.44, and four values round to 3.45.
If you *always* round 3.445 in one direction, you introduce a bias:
you round four intermediate values in one direction, and *five* values
in the other.
To minimize this kind of bias, round n.nn5 up half the time and down
half the time. The simplest way to do that is to round to the nearest
even number. That's what Access usually does. (Format() rounds more
or less the way I learned in elementary school.)