ROUND (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

Retorna um valor numérico, arredondado, para o comprimento ou precisão especificados.

Convenções de sintaxe de Transact-SQL

Sintaxe

ROUND ( numeric_expression , length [ ,function ] )  

Argumentos

numeric_expression
É uma expressão da categoria de tipo de dados numéricos aproximados ou exatos.

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 é um número positivo, numeric_expression é arredondado para o número de posições decimais especificado por length. Quando length é um número negativo, numeric_expression é arredondado à esquerda da vírgula decimal, conforme especificado por length.

função
É o tipo de operação a ser executada. function deve ser tinyint, smallint ou int. Quando function é omitido ou tem um valor igual a 0 (padrão), numeric_expression é arredondado. 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
Categorias decimal e numeric (p, s) decimal(p, s)
Categorias money e smallmoney money
Categorias 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 retornará 0.

Exemplo Resultado
ROUND(748.58, -4) 0

ROUND retornará uma numeric_expression arredondada, seja qual for o tipo de dados, quando length for um número negativo.

Exemplos Result
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  

Veja a seguir 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), ROUND(123.45, -2);  

Veja a seguir o conjunto de resultados.

----------  ----------
123.4500    100.00

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  

Veja a seguir o conjunto de resultados.

--------  
151.00  
  
(1 row(s) affected)  
  
--------  
150.00  
  
(1 row(s) affected)  

Confira também

CEILING (Transact-SQL)
Tipos de dados (Transact-SQL)
Expressões (Transact-SQL)
FLOOR (Transact-SQL)
Funções matemáticas (Transact-SQL)