No MariaDB,
ROUND()
é uma função numérica interna que arredonda seu argumento para um determinado número de casas decimais. Sintaxe
A função pode ser usada das duas maneiras a seguir:
ROUND(X)
ROUND(X,D)
Onde
X
é o valor a ser arredondado e D
é um argumento opcional que especifica o número de casas decimais para arredondar. Exemplo
Aqui está um exemplo:
SELECT ROUND(7.5);
Resultado:
+------------+ | ROUND(7.5) | +------------+ | 8 | +------------+
Passar um valor negativo produz o seguinte resultado:
SELECT ROUND(-7.5);
Resultado:
+-------------+ | ROUND(-7.5) | +-------------+ | -8 | +-------------+
Especificar casas decimais
Por padrão, o
ROUND()
função arredonda o valor para zero casas decimais. Podemos especificar o número de casas decimais para arredondar o valor passando um segundo argumento. Exemplo:
SELECT ROUND(7.5164, 2);
Resultado:
+------------------+ | ROUND(7.5164, 2) | +------------------+ | 7.52 | +------------------+
Casas decimais negativas
O segundo argumento pode ser um valor negativo, se necessário. Passar um valor negativo faz com que os dígitos fiquem à esquerda da casa decimal para se tornar zero.
Exemplo:
SELECT ROUND(3724.51, -2);
Resultado:
+--------------------+ | ROUND(3724.51, -2) | +--------------------+ | 3700 | +--------------------+
Comparado com FLOOR()
O
ROUND()
função é diferente da FLOOR()
função. O ROUND()
função arredonda o número para cima em alguns casos e para baixo em outros. O FLOOR()
A função, por outro lado, sempre retorna o maior valor inteiro não maior que seu argumento. Aqui está uma comparação para demonstrar essa diferença:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Resultado:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Além disso,
FLOOR()
não aceita um segundo argumento como ROUND()
faz. ROUND()
também é diferente do TRUNCATE()
função, que simplesmente trunca o número para uma determinada casa decimal, sem qualquer arredondamento. Argumentos não numéricos
Veja o que acontece quando fornecemos um argumento não numérico:
SELECT ROUND('Ten');
Resultado:
+--------------+ | ROUND('Ten') | +--------------+ | 0 | +--------------+ 1 row in set, 1 warning (0.028 sec)
Vamos verificar o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Argumentos ausentes
Chamando
ROUND()
sem um argumento resulta em um erro:SELECT ROUND();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'