The FLOAT and
DOUBLE types represent
approximate numeric data values. MySQL uses four bytes for
single-precision values and eight bytes for double-precision
values.
For FLOAT, the SQL standard
permits an optional specification of the precision (but not the
range of the exponent) in bits following the keyword
FLOAT in parentheses. MySQL also
supports this optional precision specification, but the
precision value is used only to determine storage size. A
precision from 0 to 23 results in a four-byte single-precision
FLOAT column. A precision from 24
to 53 results in an eight-byte double-precision
DOUBLE column.
MySQL permits a nonstandard syntax:
FLOAT(
or
M,D)REAL(
or M,D)DOUBLE
PRECISION(.
Here,
“M,D)(”
means than values can be stored with up to
M,D)M digits in total, of which
D digits may be after the decimal
point. For example, a column defined as
FLOAT(7,4) will look like
-999.9999 when displayed. MySQL performs
rounding when storing values, so if you insert
999.00009 into a
FLOAT(7,4) column, the approximate result is
999.0001.
Because floating-point values are approximate and not stored as exact values, attempts to treat them as exact in comparisons may lead to problems. They are also subject to platform or implementation dependencies. For more information, see Section B.5.5.8, “Problems with Floating-Point Values”
For maximum portability, code requiring storage of approximate
numeric data values should use
FLOAT or
DOUBLE PRECISION with no
specification of precision or number of digits.

User Comments
So - what this doesn't cover currently is how precise FLOAT and DOUBLE values are by default. If no (m,n) value is specified, what is the default m,n? Personally, I prefer to use DECIMAL(m,n) more because it isn't an estimate especially when dealing with financial information and not theory.
@Kevin
DOUBLE[(M,D)] [ZEROFILL] holds double-precision numeric values, pretty similar to FLOAT double-precision, except for its allowable range, which is -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308.
FLOAT[(M[,D])] [ZEROFILL] stores floating point numbers in the range of -3.402823466E+38 to -1.175494351E-38 and 1.175494351E-38 to 3.402823466E+38. If precision isn't specified, or <= 24, it's SINGLE precision, otherwise FLOAT is DOUBLE precision. When specified alone, precision can range from 0 to 53. If the scale is defined, too, precision may be up to 255, scale up to 253.
Add your own comment.