6

我想知道轮次((第一+第二+第三+第四)/4,2)和格式((第一+第二+第三+第四)/4,2)之间是否有区别,

我在我的数据库中尝试过,但我没有看到有什么不同,我正在做一个需要精确的项目

提前致谢

4

2 回答 2

6

将参数 X 舍入到 D 小数位。舍入算法取决于 X 的数据类型。如果未指定,D 默认为 0。D 可以为负数,以使值 X 的小数点左侧的 D 位变为零。

-->ROUND(X,D)

将数字 X 格式化为类似 '#,###,###.##' 的格式,四舍五入到 D 位小数,并将结果作为字符串返回。如果 D 为 0,则结​​果没有小数点或小数部分。D 应该是一个常数值。

--> FORMAT(X,D)
于 2013-08-29T04:41:40.933 回答
0

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                   |
+------------------------------------+
于 2021-08-17T17:30:41.600 回答