MariaDB ROUND() vs TRUNCATE()
发布于
MariaDB 有一个函数和一个函数,可以根据其参数的确切值返回相同的结果或不同的结果。ROUND()TRUNCATE()
正如函数名称所暗示的那样,_对数字进行舍入_并_截断_数字。截断数字只是将其切断,而不执行任何舍入。ROUND()``TRUNCATE()
以下是MariaDB之间和之间的区别的简要介绍。ROUND()``TRUNCATE()
区别
简而言之,以下是每个函数之间的区别:
ROUND()_将其参数舍入_到指定的小数位数。这有时会导致结果四舍五入,有时则不然。TRUNCATE()只需将其参数_截断_为指定的小数位数。不发生舍入。
语法和定义
首先,以下是每个函数的语法和定义。
ROUND()
该函数可以通过以下两种方式使用:ROUND()
ROUND(X)
ROUND(X,D)
ROUND()将参数舍入到小数位。舍入算法取决于 的数据类型。X``D``X
TRUNCATE()
该函数只能使用一种语法:TRUNCATE()
TRUNCATE(X,D)
TRUNCATE()返回截断到小数位的数字。X``D
示例
下面是一个比较,以演示 和 之间的区别:ROUND()``TRUNCATE()
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
输出:
+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
| 3.67 | 3.68 |
+---------------------+------------------+在本例中,该函数将数字向上舍入,因为下一个数字 () 大于 。ROUND()``8``5
另一方面,该函数只是截断了指定小数位的数字。 不进行任何舍入。它只是切断指定位置的数字。TRUNCATE()``TRUNCATE()
这两个函数都接受小数位的负值,并且相同的相应逻辑适用:
SELECT
TRUNCATE(36789, -2),
ROUND(36789, -2);
输出:
+---------------------+------------------+
| TRUNCATE(36789, -2) | ROUND(36789, -2) |
+---------------------+------------------+
| 36700 | 36800 |
+---------------------+------------------+相同的结果
这两个函数有时可以返回相同的结果。这完全取决于传递的参数的值。
下面是它们都返回相同结果的示例:
SELECT
TRUNCATE(3.6749, 2),
ROUND(3.6749, 2);
输出:
+---------------------+------------------+
| TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) |
+---------------------+------------------+
| 3.67 | 3.67 |
+---------------------+------------------+在本例中,没有向上舍入数字,因为下一个数字 () 小于 。因此,两个结果是相同的。ROUND()``4``5
函数FLOOR()
这两个函数都与函数不同,函数返回的最大整数值不大于其参数。 不接受第二个参数,例如 and do(无论如何它只返回一个整数)。FLOOR()FLOOR()``ROUND()``TRUNCATE()