MariaDB tem um
ROUND()
função e um FLOOR()
funções que são semelhantes em alguns aspectos, mas bastante diferentes em outros. Abaixo está um resumo rápido sobre a diferença entre
ROUND()
e FLOOR()
em MariaDB. A diferença
Aqui está a diferença entre cada função em poucas palavras:
ROUND()
arredonda seu argumento para um número especificado de casas decimais.FLOOR()
retorna o maior valor inteiro não maior que seu argumento.
Sintaxe
Aqui estão as sintaxes e definições de cada função.
ROUND()
O
ROUND()
A função pode ser usada das duas maneiras a seguir:ROUND(X)
ROUND(X,D)
ROUND()
arredonda o argumento X
para D
casas decimais. O algoritmo de arredondamento depende do tipo de dados de X
. FLOOR()
O
FLOOR()
função pode ser usada com apenas uma sintaxe:FLOOR(X)
FLOOR()
retorna o maior valor inteiro não maior que X
. Exemplo da diferença
Aqui está uma comparação para demonstrar a diferença entre
ROUND()
e FLOOR()
:SELECT
FLOOR(3.6789),
ROUND(3.6789);
Resultado:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Neste caso, o
ROUND()
função arredonda o número para cima, porque o próximo dígito (8
) é maior que 5
. O
FLOOR()
por outro lado, simplesmente retornou o maior valor inteiro não maior que o argumento (3.6789
). Segundo argumento
Outra diferença é que
ROUND()
aceita um segundo argumento opcional, enquanto FLOOR()
não. O segundo argumento permite especificar para quantas casas decimais arredondar o número.
Exemplo
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Resultado:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Exemplo do mesmo resultado
Essas funções às vezes podem retornar o mesmo resultado. Tudo depende do valor dos argumentos que estão sendo passados.
Por exemplo, se colocarmos um sinal negativo na frente dos valores, obtemos o mesmo resultado:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Resultado:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Isso não quer dizer que um valor negativo sempre retorna o mesmo resultado – não. Tudo depende dos valores reais fornecidos e do arredondamento a ser feito por
ROUND()
. Aqui está um exemplo em que valores negativos produzem resultados diferentes:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Resultado:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
E aqui está um exemplo em que valores positivos retornam o mesmo resultado:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Resultado:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
O TRUNCATE()
Função
Ambas as funções são diferentes do
TRUNCATE()
função, que simplesmente trunca o valor para um determinado número de casas decimais.