Published on

September 18, 2021

Comprendiendo el redondeo en SQL Server

El redondeo es una técnica matemática comúnmente utilizada para expresar un número en un formato más compacto y comprensible. En SQL Server, existen varias formas de redondear un número a una precisión específica. En este artículo, exploraremos diferentes funciones y técnicas de redondeo en SQL Server.

La función T-SQL Round()

La función T-SQL ROUND() es una función incorporada que se utiliza comúnmente para redondear un valor decimal al centavo más cercano. La función toma dos parámetros: el valor decimal que se va a redondear y el número de decimales a los que se va a redondear. Por ejemplo, ROUND(1.999, 2) redondeará el valor 1.999 a 2.00.

Es importante tener en cuenta que la función ROUND() tiene una ligera tendencia a redondear hacia arriba. Esto significa que si el valor decimal está exactamente a medio camino entre dos posibles valores redondeados, la función redondeará hacia arriba. Por ejemplo, ROUND(1.445, 2) se redondeará a 1.45, mientras que ROUND(1.455, 2) se redondeará a 1.46.

Redondeo personalizado con redondeo bancario

Aunque la función ROUND() se utiliza comúnmente, no implementa el redondeo bancario, que se considera ampliamente como la conversión más válida de un valor decimal a un valor entero. El redondeo bancario sigue un conjunto específico de reglas:

  • Si el último dígito después del punto decimal es menor que 5, se redondea hacia abajo.
  • Si el último dígito después del punto decimal es mayor que 5, se redondea hacia arriba.
  • Si el último dígito después del punto decimal es exactamente 5, se redondea al número par más cercano.

Para implementar el redondeo bancario en SQL Server, puedes crear una función definida por el usuario que redondee un valor decimal al entero más cercano utilizando las reglas de redondeo bancario. Luego, puedes multiplicar el valor decimal por 100 para convertirlo a centavos, aplicar la función definida por el usuario y dividir el resultado por 100 para obtener el valor redondeado en dólares.

Ejemplo: Redondeo al centavo más cercano

Consideremos un ejemplo en el que tenemos un valor decimal de 123.455000 que queremos redondear al centavo más cercano utilizando el redondeo bancario. Aquí está el código:

DECLARE @number DECIMAL(19, 6) = 123.455000;
SELECT @number AS [Número en dólares],
       (@number * 100) AS [Número en centavos],
       CAST(((dbo.bankersround(@number * 100)) / 100) AS DECIMAL(19, 2)) AS [Número redondeado]

El resultado de este código será:

+----------------+-------------------+----------------+
| Número en dólares | Número en centavos | Número redondeado |
+------------------+-------------------+----------------+
| 123.455000       | 12345.500000      | 123.46         |
+------------------+-------------------+----------------+

Como puedes ver, el valor decimal 123.455000 se redondea a 123.46 utilizando las reglas de redondeo bancario.

Conclusión

El redondeo es un concepto importante en SQL Server cuando se trata de valores decimales. La función incorporada ROUND() se utiliza comúnmente para el redondeo, pero no implementa el redondeo bancario. Al crear una función definida por el usuario y aplicar las reglas de redondeo bancario, puedes obtener resultados de redondeo más precisos. Comprender las diferentes técnicas y funciones de redondeo disponibles en SQL Server puede ayudarte a personalizar el redondeo para tus proyectos de desarrollo de aplicaciones.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.