我想知道轮次((第一+第二+第三+第四)/4,2)和格式((第一+第二+第三+第四)/4,2)之间是否有区别,
我在我的数据库中尝试过,但我没有看到有什么不同,我正在做一个需要精确的项目
提前致谢
将参数 X 舍入到 D 小数位。舍入算法取决于 X 的数据类型。如果未指定,D 默认为 0。D 可以为负数,以使值 X 的小数点左侧的 D 位变为零。
-->ROUND(X,D)
将数字 X 格式化为类似 '#,###,###.##' 的格式,四舍五入到 D 位小数,并将结果作为字符串返回。如果 D 为 0,则结果没有小数点或小数部分。D 应该是一个常数值。
--> FORMAT(X,D)
MySQL 中的 ROUND() 函数用于将 FLOAT 数舍入到指定的小数位数。
句法 :
ROUND(X, D);
X:我们要四舍五入的数字。
D:我们要将数字四舍五入的小数位数。它是可选的。它可以是零、+ve、-ve 或不存在。
案例 1: D 不存在 -
FLOAT 数四舍五入为 INT 数。如果小数点右边的位数 >= 5,则 INT 号加一,否则 INT 号保持原样。
SELECT ROUND(45.4);
+-------------+
| ROUND(45.4) |
+-------------+
| 45 |
+-------------+
SELECT ROUND(45.5);
+-------------+
| ROUND(45.5) |
+-------------+
| 46 |
+-------------+
SELECT ROUND(45.6);
+-------------+
| ROUND(45.6) |
+-------------+
| 46 |
+-------------+
情况 2: D 为零 -
结果与案例 1 相同
SELECT ROUND(45.4, 0);
+----------------+
| ROUND(45.4, 0) |
+----------------+
| 45 |
+----------------+
SELECT ROUND(45.5, 0);
+----------------+
| ROUND(45.5, 0) |
+----------------+
| 46 |
+----------------+
SELECT ROUND(45.6, 0);
+----------------+
| ROUND(45.6, 0) |
+----------------+
| 46 |
+----------------+
案例3: D为正-
FLOAT 数字四舍五入到小数点右侧的“D”位数。如果“D+1”处的数字 <= 4,则“D”处的数字保持不变。如果 'D+1' 的数字 >= 5,则 'D' 的数字加 1。
SELECT ROUND(45.44, 1);
+-----------------+
| ROUND(45.44, 1) |
+-----------------+
| 45.4 |
+-----------------+
SELECT ROUND(45.45, 1);
+-----------------+
| ROUND(45.45, 1) |
+-----------------+
| 45.5 |
+-----------------+
SELECT ROUND(45.46, 1);
+-----------------+
| ROUND(45.46, 1) |
+-----------------+
| 45.5 |
+-----------------+
案例4: D为负-
FLOAT 数字四舍五入到小数点左侧的“D”位数。如果“D”处的数字 <= 4,则“D-1”处的数字保持不变。如果 'D' 处的数字 >= 5,则 'D-1' 处的数字增加 1。
SELECT ROUND(44.4, -1);
+-----------------+
| ROUND(44.4, -1) |
+-----------------+
| 40 |
+-----------------+
SELECT ROUND(45.4, -1);
+-----------------+
| ROUND(45.4, -1) |
+-----------------+
| 50 |
SELECT ROUND(46.4, -1);
+-----------------+
| ROUND(46.4, -1) |
+-----------------+
| 50 |
+-----------------+
MySQL 中的 FORMAT() 函数用于将数字格式化为“#,###.##”格式,四舍五入到某些小数位。格式化数字后,它会将值作为字符串返回。
句法 :
FORMAT(N, D, locale);
N:我们要格式化的数字。
D:我们要将数字四舍五入的小数位数。它可以为零或+ve。
语言环境:语言环境是一个可选参数,用于确定千位分隔符和分隔符之间的分组。默认情况下,MySQL 将使用“en_US”语言环境。
对于参数D, ROUND() 和 FORMAT() 函数之间的重要区别 -
与 ROUND() 函数不同,在 FORMAT() 函数中 D不是可选的
与 ROUND() 函数不同,在 FORMAT() 函数中,D 的负值与零值具有相同的效果。
与 ROUND() 函数不同,在 FORMAT() 函数中,当 D 的值大于小数点后的位数时 - 在最后一位的右侧添加零
两个函数的其余规则相同
当 D 大于小数点后的位数时 -
SELECT FORMAT(23435.37, 3);
+---------------------+
| FORMAT(23435.37, 3) |
+---------------------+
| 23,435.370 |
+---------------------+
SELECT FORMAT(23435.37, 4);
+---------------------+
| FORMAT(23435.37, 4) |
+---------------------+
| 23,435.3700 |
+---------------------+
当 D 为零时 -
SELECT FORMAT(23435.37, 0);
+---------------------+
| FORMAT(23435.37, 0) |
+---------------------+
| 23,435 |
+---------------------+
当 D 为负时 -
SELECT FORMAT(23435.37, -1);
+----------------------+
| FORMAT(23435.37, -1) |
+----------------------+
| 23,435 |
+----------------------+
当 D 为正时 -
SELECT FORMAT(23435.34, 1);
+---------------------+
| FORMAT(23435.34, 1) |
+---------------------+
| 23,435.3 |
+---------------------+
SELECT FORMAT(23435.35, 1);
+---------------------+
| FORMAT(23435.35, 1) |
+---------------------+
| 23,435.4 |
+---------------------+
SELECT FORMAT(23435.36, 1);
+---------------------+
| FORMAT(23435.36, 1) |
+---------------------+
| 23,435.4 |
+---------------------+
locale参数是可选的。省略它会使格式默认为“en_US”。
SELECT FORMAT(2894581234.389, 2);
+---------------------------+
| FORMAT(2894581234.389, 2) |
+---------------------------+
| 2,894,581,234.39 |
+---------------------------+
语言环境参数也可以显式声明为“en_US”
SELECT FORMAT(2894581234.389, 2, 'en_US');
+------------------------------------+
| FORMAT(2894581234.389, 2, 'en_US') |
+------------------------------------+
| 2,894,581,234.39 |
+------------------------------------+
在这里,语言环境参数被更改为“en_IN”。格式有变化
SELECT FORMAT(2894581234.389, 2, 'en_IN');
+------------------------------------+
| FORMAT(2894581234.389, 2, 'en_IN') |
+------------------------------------+
| 2,89,45,81,234.39 |
+------------------------------------+
在这里,语言环境参数更改为“de_DE”。格式再次发生变化。
SELECT FORMAT(2894581234.389, 2, 'de_DE');
+------------------------------------+
| FORMAT(2894581234.389, 2, 'de_DE') |
+------------------------------------+
| 2.894.581.234,39 |
+------------------------------------+