ROUND (Transact-SQL)ROUND (Transact-SQL)

ESTE TÓPICO APLICA-SE A: simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzuresimAzure SQL Data Warehouse simParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Retorna um valor numérico, arredondado, para o comprimento ou precisão especificados.Returns a numeric value, rounded to the specified length or precision.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax


ROUND ( numeric_expression , length [ ,function ] )  

ArgumentosArguments

numeric_expressionnumeric_expression
É uma expression da categoria de tipo de dados numéricos exatos ou aproximados, com exceção do tipo de dados bit.Is an expression of the exact numeric or approximate numeric data type category, except for the bit data type.

lengthlength
É a precisão para a qual numeric_expression deve ser arredondada.Is the precision to which numeric_expression is to be rounded. 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.length must be an expression of type tinyint, smallint, or int. When length is a positive number, numeric_expression is rounded to the number of decimal positions specified by length. Quando length é um número negativo, numeric_expression é arredondado à esquerda da vírgula decimal, conforme especificado por length.When length is a negative number, numeric_expression is rounded on the left side of the decimal point, as specified by length.

funçãofunction
É o tipo de operação a ser executada.Is the type of operation to perform. function deve ser tinyint, smallint ou int. Quando function é omitido ou tem um valor igual a 0 (padrão), numeric_expression é arredondado.function must be tinyint, smallint, or int. When function is omitted or has a value of 0 (default), numeric_expression is rounded. Quando um valor diferente de 0 é especificado, numeric_expression é truncado.When a value other than 0 is specified, numeric_expression is truncated.

Tipos de retornoReturn Types

Retorna os tipos de dados a seguir.Returns the following data types.

Resultado da expressãoExpression result Tipo de retornoReturn type
tinyinttinyint intint
smallintsmallint intint
intint intint
bigintbigint bigintbigint
Categorias decimal e numeric (p, s)decimal and numeric category (p, s) decimal(p, s)decimal(p, s)
Categorias money e smallmoneymoney and smallmoney category moneymoney
Categorias float e realfloat and real category floatfloat

RemarksRemarks

ROUND sempre retorna um valor.ROUND always returns a value. Se length for negativo e maior que o número de dígitos antes do ponto decimal, ROUND retornará 0.If length is negative and larger than the number of digits before the decimal point, ROUND returns 0.

ExemploExample ResultadoResult
ROUND(748.58, -4)ROUND(748.58, -4) 00

ROUND retornará uma numeric_expression arredondada, seja qual for o tipo de dados, quando length for um número negativo.ROUND returns a rounded numeric_expression, regardless of data type, when length is a negative number.

ExemplosExamples ResultadoResult
ROUND(748.58, -1)ROUND(748.58, -1) 750.00750.00
ROUND(748.58, -2)ROUND(748.58, -2) 700.00700.00
ROUND(748.58, -3)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.Results in an arithmetic overflow, because 748.58 defaults to decimal(5,2), which cannot return 1000.00.
Para arredondar até 4 dígitos, altere o tipo de dados da entrada.To round up to 4 digits, change the data type of the input. Por exemplo:For example:

SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3);
1000.001000.00

ExemplosExamples

A.A. Usando ROUND e estimativasUsing ROUND and estimates

O exemplo a seguir apresenta duas expressões que, usando ROUND, demonstram que o último dígito sempre é uma estimativa.The following example shows two expressions that demonstrate by using ROUND the last digit is always an estimate.

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3);  
GO  

Aqui está o conjunto de resultados.Here is the result set.

----------- -----------  
123.9990    124.0000      

B.B. Usando ROUND e arredondando aproximaçõesUsing ROUND and rounding approximations

O exemplo a seguir mostra arredondamentos e aproximações.The following example shows rounding and approximations.

SELECT ROUND(123.4545, 2), ROUND(123.45, -2);  

Aqui está o conjunto de resultados.Here is the result set.

--------  ----------
123.45    100.00

C.C. Usando ROUND para truncarUsing ROUND to truncate

O exemplo a seguir usa duas instruções SELECT para demonstrar a diferença entre arredondamento e truncagem.The following example uses two SELECT statements to demonstrate the difference between rounding and truncation. A primeira instrução arredonda o resultado.The first statement rounds the result. A segunda instrução trunca o resultado.The second statement truncates the result.

SELECT ROUND(150.75, 0);  
GO  
SELECT ROUND(150.75, 0, 1);  
GO  

Aqui está o conjunto de resultados.Here is the result set.

--------  
151.00  

(1 row(s) affected)  

--------  
150.00  

(1 row(s) affected)  

Consulte TambémSee Also

CEILING (Transact-SQL) CEILING (Transact-SQL)
Tipos de dados (Transact-SQL) Data Types (Transact-SQL)
Expressões (Transact-SQL) Expressions (Transact-SQL)
FLOOR (Transact-SQL) FLOOR (Transact-SQL)
Funções matemáticas (Transact-SQL)Mathematical Functions (Transact-SQL)