SQL Server Snippets – Aproximación de valor real a N-ésimo decimal superior/inferior

Supóngase que se tiene un valor real o float, que se quiere aproximar al N-ésimo decimal superior. Por ejemplo:


DECLARE @valor FLOAT
SET @valor = 1.9011

Para aproximar al 3er decimal superior, basta usar la función mátematica integrada de T-SQL llamada CEILING, de la siguiente forma:


SELECT CEILING(@valor*1000)/1000

El resultado de la operación es 1.902. Observemos paso a paso lo que sucede:

  • El valor se multiplica por 1000, para correr 3 dígitos decimales a la izquierda del punto decimal (10^N, en donde N es la cantidad de dígitos decimales a correr), así: 1.9011*1000 = 1901.1
  • Luego, con la función CEILING, se aproxima el número al entero superior, así: CEILING(1901.1) = 1902
  • Finalmente se divide la cantidad entre 1000, para volver a colocar los 3 dígitos corridos a la derecha del punto decimal: 1902/1000 = 1.902

Si se quisiera aproximar al decimal inferior, basta sustituir la función CEILING por la función FLOOR, de la siguiente manera:


SELECT FLOOR(@valor*1000)/1000

En cuyo caso el resultado de la operación es 1.901

Anuncios

Un pensamiento en “SQL Server Snippets – Aproximación de valor real a N-ésimo decimal superior/inferior

  1. Pingback: SQL Server Snippets – Aproximación de valor real a N-ésimo decimal superior/inferior « DbRunas – Noticias y Recursos sobre Bases de Datos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s