RONDA (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de analítica SQL en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL 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

Una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado.

length

La precisión a la que numeric_expression debe redondearse. 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

El tipo de operación que hay que realizar. La función debe ser Tinyint, SmallInt o INT. Cuando se omite la función o tiene un valor de 0 (por defecto), numeric_expression se redondea. Cuando se especifica un valor distinto a 0 , numeric_expression se trunca.

Tipos de retorno

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 la longitud es negativa y mayor que el número de dígitos antes del decimal, ROUND devuelve 0.

    Ejemplo Resultado
    ROUND(748.58, -4) 0
  • ROUND devuelve un numeric_expression redondeado, independientemente del tipo de dato, cuando la longitud es un número negativo.

    Ejemplos Resultado
    ROUND(748.58, -1) 750,00
    ROUND(748.58, -2) 700,00
    ROUND(748.58, -3) Resulta en un desbordamiento aritmético, porque 748.58 por defecto es decimal(5, 2), que no puede devolver 1000.00.
  • Para redondear a cuatro dígitos, cambia el tipo de datos de la entrada. Por ejemplo:

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

    Este es el conjunto de resultados.

    1000.00
    
  • ROUND Rompe el empate redondeando la mitad lejos de cero (también conocido como redondeo comercial).

    Ejemplos Resultado
    ROUND(1.15, 1) 1.2
    ROUND(-1.15, 1) -1,2

Ejemplos

A. Usa ROUND y estimaciones

El siguiente ejemplo muestra dos expresiones que demuestran usando ROUND, el último dígito siempre es una estimación.

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

Este es el conjunto de resultados.

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

B. Usa aproximaciones de ROUND y 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. Usa 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

Este es el conjunto de resultados.

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

Este es el conjunto de resultados.

150.00