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)