MariaDB tiene un FLOOR()
función y un TRUNCATE()
función que puede devolver los mismos resultados o resultados diferentes, dependiendo del valor exacto de sus argumentos.
A continuación se muestra un resumen rápido de la diferencia entre FLOOR()
y TRUNCATE()
en MariaDB.
La diferencia
Aquí está la diferencia entre cada función en pocas palabras:
FLOOR()
devuelve el valor entero más grande no mayor que su argumento.TRUNCATE()
trunca su argumento a un número específico de lugares decimales.
Sintaxis
Primero, aquí están las sintaxis de cada función.
FLOOR()
La sintaxis de FLOOR()
va así:
FLOOR(X)
Devuelve el valor entero más grande no mayor que X
.
TRUNCATE()
La sintaxis para TRUNCATE()
va así:
TRUNCATE(X,D)
TRUNCATE()
devuelve el número X
, truncado a D
lugares decimales.
Ejemplo
Aquí hay una comparación para demostrar la diferencia entre FLOOR()
y TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Resultado:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
En este caso, el número es un valor negativo y el resultado de cada función es diferente.
FLOOR()
devolvió el entero más grande (-4
) valor no mayor que su argumento.- El
TRUNCATE()
por otro lado, simplemente truncó el número en el lugar decimal especificado.
Mismo resultado
Ambas funciones a veces pueden devolver el mismo resultado. Todo depende del valor de los argumentos que se pasan.
Si cambiamos los números a valores positivos, ambas funciones devuelven el mismo resultado:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Resultado:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
El segundo argumento
Otra diferencia obvia entre las dos funciones es que TRUNCATE()
acepta/requiere un segundo argumento. Esto puede resultar en un resultado que contiene una parte fraccionaria.
FLOOR()
sin embargo, solo devuelve un número entero, por lo que nunca se devuelve una parte fraccionaria.
Ejemplo
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Resultado:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
El ROUND()
Función
Ambas funciones son diferentes a ROUND()
función, que redondea su argumento a un número específico de lugares decimales.