ROUND (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Devuelve un valor numérico, redondeado a la longitud o precisión especificadas.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ROUND ( numeric_expression , length [ ,function ] )
Argumentos
numeric_expression
Es una expresión de la categoría de tipo de datos numéricos exactos o aproximados.
length
Es la precisión con la que numeric_expression se va a redondear. length debe ser una expresión de tipo tinyint, smallint o int. Si length es un número positivo, numeric_expression se redondea al número de posiciones decimales especificado por length. Si length es un número negativo, numeric_expression se redondea al número de posiciones decimales especificado por length.
function
Es el tipo de operación que se va a realizar. function debe ser tinyint, smallint o int. Si function se omite o tiene el valor 0 (predeterminado), numeric_expression se redondea. Si se especifica un valor distinto de 0, numeric_expression se trunca.
Tipos de valor devuelto
Devuelve los tipos de datos siguientes.
Resultado de la expresión | Tipo de valor devuelto |
---|---|
tinyint | int |
smallint | int |
int | int |
bigint | bigint |
Categorías decimal y numeric (p, s) | decimal(p, s) |
Categorías money y smallmoney | money |
Categorías float y real | float |
Comentarios
ROUND siempre devuelve un valor. Si length es un valor negativo y mayor que el número de dígitos anteriores al separador decimal, ROUND devuelve 0.
Ejemplo | Resultado |
---|---|
ROUND(748.58, -4) | 0 |
ROUND devuelve un valor de numeric_expression redondeado, independientemente del tipo de datos, cuando length es un número negativo.
Ejemplos | Resultado |
---|---|
ROUND(748.58, -1) | 750,00 |
ROUND(748.58, -2) | 700,00 |
ROUND(748.58, -3) | Da como resultado un desbordamiento aritmético, porque 748.58 es de forma predeterminada decimal(5,2), que no puede devolver 1000.00. |
Para redondear a cuatro dígitos, cambie el tipo de datos de la entrada. Por ejemplo:SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); |
1000,00 |
Ejemplos
A. Usar ROUND y valores estimados
En el ejemplo siguiente se muestran dos expresiones que demuestran que cuando se usa la función ROUND
, el último dígito siempre es un valor estimado.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3);
GO
Este es el conjunto de resultados.
----------- -----------
123.9990 124.0000
B. Usar ROUND y aproximaciones de redondeo
En el ejemplo siguiente se muestran redondeos y aproximaciones.
SELECT ROUND(123.4545, 2), ROUND(123.45, -2);
Este es el conjunto de resultados.
---------- ----------
123.4500 100.00
C. Usar ROUND para truncar
En el ejemplo siguiente se utilizan dos instrucciones SELECT
para demostrar la diferencia entre redondear y truncar. La primera instrucción redondea el resultado. La segunda instrucción lo trunca.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
Este es el conjunto de resultados.
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)
Consulte también
CEILING (Transact-SQL)
Tipos de datos (Transact-SQL)
Expresiones (Transact-SQL)
FLOOR (Transact-SQL)
Funciones matemáticas (Transact-SQL)