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