sql >> Base de Datos >  >> RDS >> MariaDB

MariaDB RONDA() vs PISO()

MariaDB tiene un ROUND() función y un FLOOR() funciones que son similares en algunos aspectos, pero bastante diferentes en otros.

A continuación se muestra un resumen rápido de la diferencia entre ROUND() y FLOOR() en MariaDB.

La diferencia

Aquí está la diferencia entre cada función en pocas palabras:

  • ROUND() redondea su argumento a un número específico de lugares decimales.
  • FLOOR() devuelve el valor entero más grande no mayor que su argumento.

Sintaxis

Aquí están las sintaxis y definiciones de cada función.

ROUND()

El ROUND() La función se puede utilizar de las dos formas siguientes:

ROUND(X)
ROUND(X,D)

ROUND() redondea el argumento X a D lugares decimales. El algoritmo de redondeo depende del tipo de datos de X .

FLOOR()

El FLOOR() La función se puede usar con una sola sintaxis:

FLOOR(X)

FLOOR() devuelve el valor entero más grande no mayor que X .

Ejemplo de la diferencia

Aquí hay una comparación para demostrar la diferencia entre ROUND() y FLOOR() :

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Resultado:

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

En este caso, el ROUND() función redondeó el número hacia arriba, porque el siguiente dígito (8 ) es mayor que 5 .

El FLOOR() función por otro lado, simplemente devolvió el valor entero más grande no mayor que el argumento (3.6789 ).

Segundo Argumento

Otra diferencia es que ROUND() acepta un segundo argumento opcional, mientras que FLOOR() no lo hace.

El segundo argumento le permite especificar a cuántos lugares decimales redondear el número.

Ejemplo

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

Resultado:

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

Ejemplo del mismo resultado

Estas funciones a veces pueden devolver el mismo resultado. Todo depende del valor de los argumentos que se pasan.

Por ejemplo, si colocamos un signo negativo delante de los valores, obtenemos el mismo resultado:

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

Resultado:

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

Eso no quiere decir que un valor negativo siempre arroje el mismo resultado, no es así. Todo depende de los valores reales que se proporcionen y del redondeo que se realice mediante ROUND() .

Aquí hay un ejemplo donde los valores negativos producen resultados diferentes:

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

Resultado:

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

Y aquí hay un ejemplo donde los valores positivos devuelven el mismo resultado:

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

Resultado:

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

El TRUNCATE() Función

Ambas funciones son diferentes a TRUNCATE() función, que simplemente trunca el valor a un número dado de lugares decimales.