Conversion of DECIMAL/NUMERIC to BIGINT, INTEGER, BYTEINT, or SMALLINT truncates any decimal portion. Conversion to DECIMAL produces a rounded result. If a range violation occurs, the operation may fail.
Conversion to FLOAT/REAL/DOUBLE PRECISION rounds to the nearest value available. Neither decimal fractions nor numbers greater than 9,007,199,254,740,992 can be guaranteed to be represented exactly, so the nearest representable value is chosen. If there are two representable values that qualify as the nearest value, then the representation with a '0' in the least significant bit is chosen. For example, 0.1, when stored in a FLOAT column, is rounded to a value slightly higher: 0.1000000000000000055511151231257827021181583404541015625.
For details on rounding, see DECIMAL/NUMERIC Data Types.
Some examples of numeric conversions are:
Value | Converted To | Result |
---|---|---|
20000.99 | INTEGER | 20000 |
20000.99 | DECIMAL(6,1) | 20001.0 |
20000.99 | DECIMAL(4, 1) | error |
200000 | SMALLINT | error |