1、在MySQL数据库中,ROUND()函数用于将一个数值按照指定的精度四舍五入为一个新的数值。它的语法如下:

ROUND(number, precision)

其中,number为需要进行四舍五入操作的原始数值,precision为保留小数点后的位数。如果指定precision为0,则四舍五入到整数。

例如,假设有一个数值为3.1415926,现在我们需要将其四舍五入保留两位小数,可以使用如下

SELECT ROUND(3.1415926, 2);

执行该SQL语句后,将得到结果3.14。

注意,ROUND()函数还有一个可选参数mode,它用于指定舍入模式。默认情况下,ROUND()函数会按照四舍五入的规则进行舍入操作,即当小数点后一位为5时,向最近的偶数舍入(例如,1.25将被舍入为1.2,1.35将被舍入为1.4)。如果需要使用不同的舍入模式,可以指定mode参数,其取值范围为0-4,含义如下:

  • mode=0:按照四舍五入的规则进行舍入操作。
  • mode=1:向上舍入。
  • mode=2:向下舍入。
  • mode=3:朝绝对值方向舍入。
  • mode=4:朝正无穷方向舍入。

例如,假设有一个数值为2.5,现在我们需要按照不同的舍入模式进行舍入操作,可以使用如下SQL语句:

SELECT ROUND(2.5), ROUND(2.5, 0, 1), ROUND(2.5, 0, 2), ROUND(2.5, 0, 3), ROUND(2.5, 0, 4);

执行该SQL语句后,将得到下面的结果:

+--------------+---------------+---------------+---------------+---------------+
| ROUND(2.5)   | ROUND(2.5,0,1)| ROUND(2.5,0,2)| ROUND(2.5,0,3)| ROUND(2.5,0,4)|
+--------------+---------------+---------------+---------------+---------------+
|            3 |             3 |             2 |             3 |             3 |
+--------------+---------------+---------------+---------------+---------------+

可以看出,当指定不同的mode参数时,ROUND()函数的舍入行为也会发生变化。

2、在MySQL数据库中,FLOOR()函数用于将一个数值向下取整为最接近且小于该数值的整数。它的语法如下:

FLOOR(x)

其中,x为需要进行取整操作的原始数值。

例如,假设有一个数值为3.7,现在我们需要将其向下取整为最接近且小于该数值的整数,可以使用如下SQL语句:

SELECT FLOOR(3.7);

执行该SQL语句后,将得到结果3。

FLOOR()函数还可以与其他函数一起使用,例如,结合ROUND()函数可以实现四舍五入到整数并向下取整的效果。例如,假设有一个数值为3.5,现在我们需要将其四舍五入到整数并向下取整,可以使用如下SQL语句:

SELECT FLOOR(ROUND(3.5));

执行该SQL语句后,将得到结果3。

需要注意的是,FLOOR()函数对于负数也适用,即它会将负数向左侧靠拢的方向取整。例如,假设有一个数值为-3.7,现在我们需要将其向左侧靠拢的方向取整,可以使用如下SQL语句:

SELECT FLOOR(-3.7);

执行该SQL语句后,将得到结果-4。

总之,FLOOR()函数用于将一个数值向下取整为最接近且小于该数值的整数,适用于需要去除小数部分并保留整数部分的情况

3、两者的区别

ROUND()函数用于将一个数值按照指定精度进行四舍五入,即将该数值保留到指定小数位数,并根据小数点后第一位的值决定是否向上或向下取整。例如,ROUND(3.55, 1) 的结果为3.6。

而FLOOR()函数用于将一个数值向下取整为最接近且小于该数值的整数。例如,FLOOR(3.55) 的结果为3。

另外,对于负数的取整处理结果也不同。ROUND()函数会按照正常的四舍五入规则进行处理,即当小数点后第一位为5时,会向离它更近的偶数取整;而FLOOR()函数则会将负数向左侧靠拢的方向取整。

因此,在实际应用中,需要根据具体的要求来选择使用ROUND()函数还是FLOOR()函数,以达到预期的结果。如果需要按照指定精度进行四舍五入,则可以使用ROUND()函数,否则可以使用FLOOR()函数对数值进行取整。