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).