ps:最近项目当中遇到了sql计算保留两位小数问题,在此进行存档一番
Mysql
-
ROUND(X,D) 函数
其中D可不传,默认为0,D可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0。
示例:SELECT ROUND(100.3465,2), ROUND(100,2), ROUND(0.6,2), ROUND(114.6,-1);
结果为:
-
TRUNCATE(X,D) 函数
D表示,舍去小数点后D位,并且D同样可以为负数。ps:不进行四舍五入
示例:SELECT TRUNCATE(100.3465,2), TRUNCATE(100,2), TRUNCATE(0.6,2), TRUNCATE(114.6,-1);
结果为:
-
FORMAT(X,D)函数
强制保留D位小数,整数部分超过三位的时候以逗号分割,并且返回的结果是String类型。
示例:SELECT FORMAT(100.3465,2), FORMAT(100,2), FORMAT(100.6,2);
结果为:
-
CONVERT(VALUE,TYPE)函数 ps:支持四舍五入
类型转换,相当于截取。
type:- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
示例:
SELECT CONVERT((23/101)*100,DECIMAL(10,3));
结果为: