MySQL中的DECIMAL類型可以存儲精確數(shù)值,但當(dāng)進行數(shù)據(jù)計算時往往需要保留小數(shù)位數(shù)。此時,就需要用到四舍五入函數(shù)。
SELECT ROUND(1.2345, 2); -- 保留兩位小數(shù),結(jié)果為1.23 SELECT ROUND(1.235, 2); -- 保留兩位小數(shù),結(jié)果為1.24 SELECT ROUND(12345, -2); -- 取整到百位,結(jié)果為12300
ROUND函數(shù)有2個參數(shù),第一個參數(shù)是要進行四舍五入的數(shù)值,第二個參數(shù)是保留的小數(shù)位數(shù)。如果第二個參數(shù)是負數(shù),就是對整數(shù)位進行四舍五入。
當(dāng)對DECIMAL類型進行四舍五入時,需要注意其精度。例如DECIMAL(10,2)類型的字段,表示最多存儲10位數(shù)值,其中2位小數(shù)位。在進行四舍五入之前,需要先將DECIMAL類型的數(shù)值轉(zhuǎn)成DOUBLE類型的數(shù)值,再進行四舍五入。
SELECT ROUND(CAST(column AS DOUBLE), 2) FROM table;
同時,需要注意,如果四舍五入的結(jié)果超出了定義的精度范圍,就會出現(xiàn)截斷的情況。