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

MariaDB ROUND() vs TRUNCATE()


MariaDB tem um ROUND() função e um TRUNCATE() função que pode retornar os mesmos resultados ou resultados diferentes, dependendo do valor exato de seus argumentos.

Como os nomes das funções sugerem, ROUND() rodadas o número e TRUNCATE() trunca o número. Truncar um número simplesmente o corta sem realizar nenhum arredondamento.

Abaixo está um resumo rápido sobre a diferença entre ROUND() e TRUNCATE() em MariaDB.

A diferença


Aqui está a diferença entre cada função em poucas palavras:
  • ROUND() rodadas seu argumento para um número especificado de casas decimais. Isso às vezes fará com que o resultado seja arredondado, às vezes não.
  • TRUNCATE() simplesmente trunca seu argumento para um número especificado de casas decimais. Nenhum arredondamento ocorre.

Sintaxe e definições


Primeiro, 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 .

TRUNCATE()


O TRUNCATE() função pode ser usada com apenas uma sintaxe:
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 ROUND() e TRUNCATE() :
SELECT 
    TRUNCATE(3.6789, 2),
    ROUND(3.6789, 2);

Resultado:
+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

Neste caso, o ROUND() função arredonda o número para cima, porque o próximo dígito (8 ) é maior que 5 .

O TRUNCATE() por outro lado, simplesmente truncou o número na casa decimal especificada. TRUNCATE() não faz arredondamento. Ele simplesmente corta o número no local especificado.

Ambas as funções aceitam um valor negativo para a casa decimal, e a mesma lógica respectiva se aplica:
SELECT 
    TRUNCATE(36789, -2),
    ROUND(36789, -2);

Resultado:
+---------------------+------------------+
| TRUNCATE(36789, -2) | ROUND(36789, -2) |
+---------------------+------------------+
|               36700 |            36800 |
+---------------------+------------------+

Mesmo resultado


Às vezes, ambas as funções podem retornar o mesmo resultado. Tudo depende do valor dos argumentos que estão sendo passados.

Aqui está um exemplo em que ambos retornam o mesmo resultado:
SELECT 
    TRUNCATE(3.6749, 2),
    ROUND(3.6749, 2);

Resultado:
+---------------------+------------------+
| TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) |
+---------------------+------------------+
|                3.67 |             3.67 |
+---------------------+------------------+

Neste caso, ROUND() não arredondar o número, porque o próximo dígito (4 ) era menor que 5 . Portanto, ambos os resultados são iguais.

O FLOOR() Função


Ambas as funções são diferentes do FLOOR() função, que retorna o maior valor inteiro não maior que seu argumento. FLOOR() não aceita um segundo argumento como ROUND() e TRUNCATE() do (ele sempre retorna um inteiro de qualquer maneira).