Compartir a través de


RONDA (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de SQL Analytics 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