DECIMAL/NUMERICのBIGINT、INTEGER、BYTEINT、またはSMALLINTへの変換は、小数部分を切り捨てます。DECIMALへの変換は、四捨五入された結果になります。範囲を超えた場合は、操作が失敗することがあります。
FLOAT/REAL/DOUBLE PRECISIONへの変換では、使用可能な最近似値に端数処理(丸め)されます。小数や、9,007,199,254,740,992よりも大きな数は、どちらも正確に表現できる保証はありません。そのため、表現可能な最近似値が選択されます。最近似値と見なされる2つの表現可能な値があるときには、最小有効ビットが0で表わされる値が選択されます。例えば、0.1をFLOAT列に格納すると、その値はわずかに大きな値に丸められます(0.1000000000000000055511151231257827021181583404541015625)。
切り上げ/切り捨ての詳細については、DECIMAL/NUMERICデータ型を参照してください。
数値変換の例を、いくつか示します。
値 | 変換後 | 結果 |
---|---|---|
20000.99 | INTEGER | 20000 |
20000.99 | DECIMAL(6,1) | 20001.0 |
20000.99 | DECIMAL(4, 1) | エラー |
200000 | SMALLINT | エラー |