MariaDB tem um
FLOOR() função e um TRUNCATE() função que pode retornar os mesmos resultados ou resultados diferentes, dependendo do valor exato de seus argumentos. Abaixo está um resumo rápido sobre a diferença entre
FLOOR() e TRUNCATE() em MariaDB. A diferença
Aqui está a diferença entre cada função em poucas palavras:
FLOOR()retorna o maior valor inteiro não maior que seu argumento.TRUNCATE()trunca seu argumento para um número especificado de casas decimais.
Sintaxe
Primeiro, aqui estão as sintaxes de cada função.
FLOOR()
A sintaxe para
FLOOR() fica assim:FLOOR(X) Retorna o maior valor inteiro não maior que
X . TRUNCATE()
A sintaxe para
TRUNCATE() fica assim:TRUNCATE(X,D) TRUNCATE() retorna o número X , truncado para D casas decimais. Exemplo
Aqui está uma comparação para demonstrar a diferença entre
FLOOR() e TRUNCATE() :SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0); Resultado:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
Nesse caso, o número é um valor negativo e o resultado de cada função é diferente.
FLOOR()retornou o maior inteiro (-4) valor não maior que seu argumento.- O
TRUNCATE()por outro lado, simplesmente truncou o número na casa decimal especificada.
Mesmo resultado
Às vezes, ambas as funções podem retornar o mesmo resultado. Tudo depende do valor dos argumentos que estão sendo passados.
Se alterarmos os números para valores positivos, ambas as funções retornarão o mesmo resultado:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0); Resultado:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
O segundo argumento
Outra diferença óbvia entre as duas funções é que
TRUNCATE() aceita/requer um segundo argumento. Isso pode resultar em um resultado que contém uma parte fracionária. FLOOR() no entanto, apenas retorna um inteiro, portanto, nenhuma parte fracionária é retornada. Exemplo
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2); Resultado:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
O ROUND() Função
Ambas as funções são diferentes do
ROUND() função, que arredonda seu argumento para um número especificado de casas decimais.