sql

mysql查询结果集数据四舍五入

2020-05-25  本文已影响0人  小胖学编程

在做mysql统计时,我们一定会遇到获取百分比数据的需求。可以使用mysql函数,在查询时对数据进行4舍5入。

需求:查询正确率,并保留2位小数:

1. 使用format()函数。

因为正确率是百分比,故要保存4位小数:

mysql> select format(0.10298,4);
+-------------------+
| format(0.10298,4) |
+-------------------+
| 0.1030            |
+-------------------+
1 row in set (0.01 sec)
mysql> select format(0.10294,4);
+-------------------+
| format(0.10294,4) |
+-------------------+
| 0.1029            |
+-------------------+
1 row in set (0.01 sec)
mysql> select format(1.10294,0);
+-------------------+
| format(1.10294,0) |
+-------------------+
| 1                 |
+-------------------+
1 row in set (0.01 sec)

2. 使用convert函数

最终的结果集有4位,其中小数点(4舍5入)保留3位。

mysql> select convert(0.14275,decimal(4,3));
+-------------------------------+
| convert(0.14275,decimal(4,3)) |
+-------------------------------+
| 0.143                         |
+-------------------------------+
1 row in set (0.01 sec)

注意:若是字段值过大,DECIMAL的规定是4位数字:小数点保留3位,整数就保留1位。那么最终输出的是9.999。

mysql> select convert(10.14275,decimal(4,3));
+--------------------------------+
| convert(10.14275,decimal(4,3)) |
+--------------------------------+
| 9.999                          |
+--------------------------------+
1 row in set (0.01 sec)

3. JAVA代码的实现

得到未4舍5入的数据,依靠JAVA代码来完成转换。newScale(保留几位小数)

 public static double round(double source, int newScale) {
     BigDecimal bg = new BigDecimal(source);
     return bg.setScale(newScale, BigDecimal.ROUND_HALF_UP).doubleValue();
 }

推荐阅读

mysql官网—12.10强制转换函数和运算符

上一篇 下一篇

猜你喜欢

热点阅读