No SQL Server, o T-SQL
ROUND()
A função permite arredondar um número para um comprimento ou precisão especificados. Você fornece o número como um argumento, bem como o comprimento para o qual deseja que o número seja arredondado. A função também aceita um terceiro argumento opcional que permite especificar se o número é arredondado ou truncado.
Sintaxe
A sintaxe fica assim:
ROUND ( numeric_expression , length [ ,function ] )
Onde os argumentos têm as seguintes definições:
- expressão_numérica
- É uma expressão da categoria de tipo de dados numéricos exatos ou numéricos aproximados, exceto para o bit tipo de dados.
- comprimento
- É a precisão para a qual numeric_expression deve ser arredondado. Este argumento deve ser uma expressão do tipo tinyint , pequeno , ou int . Quando for um número positivo, numeric_expression é arredondado para o número de casas decimais especificadas por este argumento. Quando for um número negativo, numeric_expression é arredondado no lado esquerdo do ponto decimal, conforme especificado por este argumento.
- função
- É o tipo de operação a ser executada. Deve ser tinyint , pequeno , ou int . Quando este argumento é omitido ou tem valor 0 (padrão), numeric_expression é arredondado. Quando um valor diferente de 0 é especificado, numeric_expression está truncado.
Exemplo 1 – Uso básico
Aqui está um exemplo básico para demonstrar como essa função funciona.
SELECT ROUND(1.49, 1) Result;
Resultado:
+----------+ | Result | |----------| | 1.50 | +----------+
Neste caso, o número é arredondado para cima.
Exemplo 2 – Casas decimais zero
Se definirmos o segundo argumento como zero, eis o que acontece:
SELECT ROUND(1.49, 0) Result;
Resultado:
+----------+ | Result | |----------| | 1.00 | +----------+
Isso ocorre porque especificamos zero partes fracionárias para arredondar o número.
E aqui está o que acontece se eu alterar o número inicial para 1,50:
SELECT ROUND(1.50, 0) Result;
Resultado:
+----------+ | Result | |----------| | 2.00 | +----------+
Exemplo 3 – Mais casas decimais
Aqui está um exemplo onde o número a ser arredondado contém mais casas decimais.
SELECT ROUND(1.234, 2) Result;
Resultado:
+----------+ | Result | |----------| | 1.230 | +----------+
E aqui está o que acontece quando eu aumento o último dígito para 5:
SELECT ROUND(1.235, 2) Result;
Resultado:
+----------+ | Result | |----------| | 1.240 | +----------+
Claro, poderíamos usar muito mais casas decimais. Por exemplo, poderíamos reduzir muitas casas decimais.
SELECT ROUND(1.23456789123456789, 8) Result;
Resultado:
+---------------------+ | Result | |---------------------| | 1.23456789000000000 | +---------------------+
Exemplo 4 – Truncamento (ou seja, usando um terceiro argumento)
Como mencionado, podemos fornecer um terceiro argumento para especificar se o resultado é truncado ou apenas arredondado. Os exemplos anteriores são todos arredondados porque não especificamos um terceiro argumento. Quando omitimos o terceiro argumento, um valor de 0 é usado (o que significa arredondar o resultado). Se fornecermos um valor diferente de 0, o resultado será truncado.
SELECT ROUND(1.236, 2) 'Rounded (by default)', ROUND(1.236, 2, 0) 'Rounded (explicitly)', ROUND(1.236, 2, 1) 'Truncated';
Resultado:
+------------------------+------------------------+-------------+ | Rounded (by default) | Rounded (explicitly) | Truncated | |------------------------+------------------------+-------------| | 1.240 | 1.240 | 1.230 | +------------------------+------------------------+-------------+
Exemplo 5 – Usando um valor negativo para o segundo argumento
Veja como podemos usar um valor negativo no segundo argumento para fazer com que partes da parte não fracionária sejam arredondadas para zero.
SELECT ROUND(123.456, -1) Result;
Resultado:
+----------+ | Result | |----------| | 120.000 | +----------+
E aqui está como ele fica arredondado se aumentarmos o
3
para 5
ou mais. SELECT ROUND(125.456, -1) Result;
Resultado:
+----------+ | Result | |----------| | 130.000 | +----------+
Você pode fazer isso mesmo que o número não contenha parte fracionária.
SELECT ROUND(125, -1) Result;
Resultado:
+----------+ | Result | |----------| | 130 | +----------+
Exemplo 6 – Arredondamento de números negativos x números positivos
Conforme visto nos exemplos anteriores, ao usar números positivos, um valor com uma parte fracionária de 0,5 ou maior é arredondado para o próximo inteiro.
No entanto, ao usar números negativos, esses valores são arredondados para baixo .
SELECT ROUND(1.50, 0) Positive, ROUND(-1.50, 0) Negative;
Resultado:
+------------+------------+ | Positive | Negative | |------------+------------| | 2.00 | -2.00 | +------------+------------+