MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB ROUND() vs FLOOR()


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.