12.18.4 Rounding Behavior

This section discusses precision math rounding for the
ROUND() function and for inserts
into columns with exact-value types
(DECIMAL and integer).

The ROUND() function rounds
differently depending on whether its argument is exact or
approximate:

For exact-value numbers,
ROUND() uses the “round
half up” rule: A value with a fractional part of .5 or
greater is rounded up to the next integer if positive or down
to the next integer if negative. (In other words, it is
rounded away from zero.) A value with a fractional part less
than .5 is rounded down to the next integer if positive or up
to the next integer if negative.

For approximate-value numbers, the result depends on the C
library. On many systems, this means that
ROUND() uses the “round
to nearest even” rule: A value with any fractional part
is rounded to the nearest even integer.

The following example shows how rounding differs for exact and
approximate values: