ROUND (Transact-SQL)
Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento 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 ] )
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
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
El conjunto de resultados es el siguiente:
----------- -----------
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);
El conjunto de resultados es el siguiente:
---------- ----------
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
El conjunto de resultados es el siguiente:
--------
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)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de