使用cast(.. AS ..)函数 转为decimal
SELECT sum(money_f) result from student; ---->21.7999992370605
SELECT cast(sum(money_f) AS DECIMAL(10,2)) result from student; --->21.80
decimal(10,2)中的“2”表示小数部分的位数,如果插入的值未指定小数部分或者小数部分不足两位则会自动补到2位小数,若插入的值小数部分超过了2为则会发生截断,截取前2位小数。
“10”指的是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过“10-2”位,否则不能成功插入,会报超出范围的错误。
SELECT cast( 29.9 AS DECIMAL(10,2)) result from dual;
SELECT cast( 29.944 AS DECIMAL(10,2) ) result from dual;