For optimum storage, you should try to use the most precise type
in all cases. For example, if an integer column is used for values
in the range from `1`

to
`99999`

, `MEDIUMINT UNSIGNED`

is
the best type. Of the types that represent all the required
values, this type uses the least amount of storage.

Tables created in MySQL 5.0.3 and above uses a new storage format
for `DECIMAL`

columns. All basic calculation
(`+,-,*,/`

) with `DECIMAL`

columns are done with precision of 65 decimal (base 10) digits.
See Section 11.1.1, “Overview of Numeric Types”.

Prior to MySQL 5.0.3, calculations on `DECIMAL`

values are performed using double-precision operations. If
accuracy is not too important or if speed is the highest priority,
the `DOUBLE`

type may be good enough. For high
precision, you can always convert to a fixed-point type stored in
a `BIGINT`

. This allows you to do all
calculations with 64-bit integers and then convert results back to
floating-point values as necessary.