Chapter 23. Precision Math
Table of Contents
23.1. Types of Numeric Values
23.2. DECIMAL Data Type Changes
23.3. Expression Handling
23.4. Rounding Behavior
23.5. Precision Math Examples
MySQL 5 introduces precision math, that is, numeric value handling that results in more accurate results and more control over invalid values than in earlier versions of MySQL. Precision math is based on two implementation changes:
The introduction of new SQL modes in MySQL 5.0.2 that control how strict the server is about accepting or rejecting invalid data.
The introduction in MySQL 5.0.3 of a library for fixed-point arithmetic.
These changes have several implications for numeric operations:
More precise calculations.
For exact-value numbers, calculations do not introduce floating-point error. Instead, exact precision is used. For example, a number such as .0001 is treated as an exact value rather than as an approximate value, and summing it 10,000 times produces a result of 1, not a value "close" to 1.
Well-defined rounding behavior.
For the exact-value numbers, the result of ROUND() depends on its argument, not on factors such as how the underlying C library works.
Improved platform independence.
Operations on exact numeric values are the same across different platforms such as Windows and Unix.
Control over invalid value handling.
Overflow and division by zero are detectable and can be treated as errors. For example, you can treat a value that is too large for a column as an error rather than having the value truncated to li