【问】为什么要保留n位小数 或 保留整数 输出?
【答】通常在存储数据时,会将原本是小数的数据经过 乘以 10*n 倍后,转为整数存入数据库,
所以我在sql查询操作过程中,进行了 “除法” 运算 ,输出额结果是 decimal 类型,
于是在序列化时会报错(用python转换json格式的时候会报错),经过查询,只需转化一下类型即可;
【例】select number/100 as num1 from tabale ; 这个查询结果 会报错:
【解决方案】
1、调用mysql自带的格式化小数函数format(x,d)
- select format(23456.789,2);
- select formate(salary,2);
输出:
- 23,456.79
,format()函数会对小数部分进行四舍五入操作,整数部分从右向左每3位一个逗号进行格式化输出,如下图:
2、调用mysql自带的函数truncate(x,d)
例如:
- select truncate(23456.789,2);
- select truncate(salary,2);
输出:
- 23456.78
truncate()函数会将小数部分2位以后的值直接舍去,如下图:
3、调用mysql自带的函数convert(expr,type);
例如:
- select convert(23456.789,decimal(10,2));
- select convert(salary,decimal(10,2));
输出:
- 23456.79
convert()函数会对小数部分进行四舍五入操作,解释一下decimal(10,2),它表示最终得到的结果整数部分位数加上小数部分位数小于等于10,小数部分位数2,如下图:
4、使用 CAST在查询的时候处理成无符号型
查询出来countNum是Decimal
SELECT gid, SUM(number) countNum FROM `gift_tb` WHERE tid="1" GROUP BY gid
转换成无符号型
SELECT gid, CAST(SUM(number) AS SIGNED ) AS countNum FROM `gift_tb` WHERE tid="1" GROUP BY gid