ROUND (Transact-SQL)
Retorna um valor numérico, arredondado, para o comprimento ou precisão especificados.
Convenções de sintaxe Transact-SQL
Sintaxe
ROUND ( numeric_expression , length [ ,function ] )
Argumentos
numeric_expression
É uma expressão da categoria de tipo de dados numéricos exatos ou aproximados, com exceção do tipo de dados bit.length
É a precisão para a qual numeric_expression deve ser arredondada. length deve ser uma expressão do tipo tinyint, smallint ou int. Quando length for um número positivo, numeric_expression é arredondada para o número de posições decimais especificado por length. Quando length for um número negativo, numeric_expression é arredondada no lado esquerdo do ponto decimal, conforme especificado por length.function
É o tipo de operação a ser executada. function deve ser tinyint, smallint ou int. Quando function é omitido ou tem um valor 0 (padrão), a numeric_expression é arredondada. Quando um valor diferente de 0 é especificado, numeric_expression é truncado.
Tipos de retorno
Retorna os tipos de dados a seguir.
Resultado da expressão |
Tipo de retorno |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
Categoria decimal e numeric (p, s) |
decimal(p, s) |
Categoria money e smallmoney |
money |
Categoria float e real |
float |
Comentários
ROUND sempre retorna um valor. Se length for negativo e maior que o número de dígitos antes do ponto decimal, ROUND retorna 0.
Exemplo |
Resultado |
---|---|
ROUND(748.58, -4) |
0 |
ROUND retorna uma numeric_expression arredondada, independentemente do tipo de dados, quando length é um número negativo.
Exemplos |
Resultado |
---|---|
ROUND(748.58, -1) |
750.00 |
ROUND(748.58, -2) |
700.00 |
ROUND(748.58, -3) |
Os resultados em um estouro aritmético porque o valor padrão de 748.58 é o decimal(5,2), que não pode retornar 1000.00. |
Para arredondar até 4 dígitos, altere o tipo de dados da entrada. Por exemplo: SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); |
1000.00 |
Exemplos
A.Usando ROUND e estimativas
O exemplo a seguir apresenta duas expressões que, usando ROUND, demonstram que o último dígito sempre é uma estimativa.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
GO
Aqui está o conjunto de resultados.
----------- -----------
123.9990 124.0000
B.Usando ROUND e arredondando aproximações
O exemplo a seguir mostra arredondamentos e aproximações.
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);
GO
Aqui está o conjunto de resultados.
----------
123.4500
(1 row(s) affected)
--------
100.00
(1 row(s) affected)
C.Usando ROUND para truncar
O exemplo a seguir usa duas instruções SELECT para demonstrar a diferença entre arredondamento e truncagem. A primeira instrução arredonda o resultado. A segunda instrução trunca o resultado.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
Aqui está o conjunto de resultados.
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)