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.