Another way to see the difference in exact and approximate value
handling is to add a small number to a sum many times. Consider
the following stored procedure, which adds
.0001 to a variable 1,000 times.

Rounding behavior (for example, with the
ROUND() function) is independent of
the implementation of the underlying C library, which means that
results are consistent from platform to platform.

Rounding for exact-value columns
(DECIMAL and integer) and
exact-valued numbers uses the “round half away from
zero” rule. Values with a fractional part of .5 or
greater are rounded away from zero to the nearest integer, as
shown here:

Rounding for floating-point values uses the C library, which
on many systems uses the “round to nearest even”
rule. Values with any fractional part on such systems are
rounded to the nearest even integer: