MariaDB ROUND() vs FLOOR()

发布于

MariaDB 有一个函数和一个在某些方面相似但在其他方面完全不同的函数。ROUND()FLOOR()

以下是MariaDB之间和之间的区别的简要介绍。ROUND()``FLOOR()

区别

简而言之,以下是每个函数之间的区别:

  • ROUND()将其参数舍入到指定的小数位数。
  • FLOOR()返回不大于其参数的最大整数值。

语法

以下是每个函数的语法和定义。

ROUND()

该函数可以通过以下两种方式使用:ROUND()

ROUND(X)
ROUND(X,D)

ROUND()将参数舍入到小数位。舍入算法取决于 的数据类型。X``D``X

FLOOR()

该函数只能使用一种语法:FLOOR()

FLOOR(X)

FLOOR()返回不大于 的最大整数值。X

差异示例

下面是一个比较,以演示 和 之间的区别:ROUND()``FLOOR()

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

输出:

+---------------+---------------+
| FLOOR(3.6789) | ROUND(3.6789) |
+---------------+---------------+
|             3 |             4 |
+---------------+---------------+

在本例中,该函数将数字向上舍入,因为下一个数字 () 大于 。ROUND()``8``5

另一方面,该函数只是返回不大于参数 () 的最大整数值。FLOOR()``3.6789

第二个参数

另一个区别是接受可选的第二个参数,而不接受。ROUND()``FLOOR()

第二个参数允许您指定将数字舍入到的小数位数。

例

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789, 2);

输出:

+---------------+------------------+
| FLOOR(3.6789) | ROUND(3.6789, 2) |
+---------------+------------------+
|             3 |             3.68 |
+---------------+------------------+

相同结果的示例

这些函数有时可以返回相同的结果。这完全取决于传递的参数的值。

例如,如果我们在值前面放置一个负号,我们会得到相同的结果:

SELECT 
    FLOOR(-3.6789),
    ROUND(-3.6789);

输出:

+----------------+----------------+
| FLOOR(-3.6789) | ROUND(-3.6789) |
+----------------+----------------+
|             -4 |             -4 |
+----------------+----------------+

这并不是说负值总是返回相同的结果 - 它不会。这完全取决于提供的实际值以及由 进行的舍入。ROUND()

下面是负值产生不同结果的示例:

SELECT 
    FLOOR(-3.3739),
    ROUND(-3.3739);

输出:

+----------------+----------------+
| FLOOR(-3.3739) | ROUND(-3.3739) |
+----------------+----------------+
|             -4 |             -3 |
+----------------+----------------+

下面是一个正值返回相同结果的示例:

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

输出:

+---------------+---------------+
| FLOOR(3.3739) | ROUND(3.3739) |
+---------------+---------------+
|             3 |             3 |
+---------------+---------------+

函数TRUNCATE()

这两个函数都与函数不同,后者只是将值截断为给定的小数位数。TRUNCATE()