Redondeo de números

29/11/2003 - 16:32 por Alfonso Garcia | Informe spam
Hola Grupo
Necesito saber cómo se hace en SQL ele redondedo de números de 5 en 5
centésimas. Lo expresaré con un ejemplo: si tengo la medida 1.32 cm quiero
facturar 1,35. Si la medida es 1.36 facturo 1.40.
Un saludo

Alfonso J

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
29/11/2003 - 16:47 | Informe spam
Puedes probar con ROUND, algunos ejemplos del Books Online:

SELECT ROUND(123.4545, 2) -> 123.4500SELECT ROUND(123.45, -2) ->
100.00SELECT ROUND(150.75, 0) -> 151.00SELECT ROUND(150.75, 0, 1) -> 150.00
Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Alfonso Garcia" wrote in message
news:uc$
Hola Grupo
Necesito saber cómo se hace en SQL ele redondedo de números de 5 en 5
centésimas. Lo expresaré con un ejemplo: si tengo la medida 1.32 cm quiero
facturar 1,35. Si la medida es 1.36 facturo 1.40.
Un saludo

Alfonso J


Respuesta Responder a este mensaje
#2 Javier Loria
29/11/2003 - 19:24 | Informe spam
Hola Alfonso:
Si quires redondear en bloques de 5, debes usar la funcion que explica
Gustavo con un truco que es multiplicar por 20 y dividir por 20.
SELECT ROUND(123.46*20,0)/20
El multiplicar por 20, redondera y luego dividir por 20 te debe brindar el
resultado deseado. .
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gustavo Larriera [MVP] escribio:
Puedes probar con ROUND, algunos ejemplos del Books Online:

SELECT ROUND(123.4545, 2) -> 123.4500SELECT ROUND(123.45, -2) ->
100.00SELECT ROUND(150.75, 0) -> 151.00SELECT ROUND(150.75, 0, 1) ->
150.00

"Alfonso Garcia" wrote in message
news:uc$
Hola Grupo
Necesito saber cómo se hace en SQL ele redondedo de números de 5 en 5
centésimas. Lo expresaré con un ejemplo: si tengo la medida 1.32 cm
quiero facturar 1,35. Si la medida es 1.36 facturo 1.40.
Un saludo

Alfonso J
Respuesta Responder a este mensaje
#3 Gustavo Larriera [MVP]
29/11/2003 - 20:35 | Informe spam
Muy buen truco Javier! Gracias por el tip.

muchisimos saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Javier Loria" wrote in message
news:
Hola Alfonso:
Si quires redondear en bloques de 5, debes usar la funcion que explica
Gustavo con un truco que es multiplicar por 20 y dividir por 20.
SELECT ROUND(123.46*20,0)/20
El multiplicar por 20, redondera y luego dividir por 20 te debe brindar el
resultado deseado. .
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gustavo Larriera [MVP] escribio:
> Puedes probar con ROUND, algunos ejemplos del Books Online:
>
> SELECT ROUND(123.4545, 2) -> 123.4500SELECT ROUND(123.45, -2) ->
> 100.00SELECT ROUND(150.75, 0) -> 151.00SELECT ROUND(150.75, 0, 1) ->
> 150.00
>
> "Alfonso Garcia" wrote in message
> news:uc$
>> Hola Grupo
>> Necesito saber cómo se hace en SQL ele redondedo de números de 5 en 5
>> centésimas. Lo expresaré con un ejemplo: si tengo la medida 1.32 cm
>> quiero facturar 1,35. Si la medida es 1.36 facturo 1.40.
>> Un saludo
>>
>> Alfonso J


Respuesta Responder a este mensaje
#4 ulises
29/11/2003 - 22:53 | Informe spam
Con el permiso de Javier, le haría una pequeña suma para
obtener lo deseado por Alfonso; si lo manejamos en una
función :

CREATE FUNCTION dbo.fn_obtienevalor
( @numero decimal(15,2) )
RETURNS decimal (15,2)
AS
BEGIN
DECLARE @valor as decimal(15,2)
SELECT @valor = ROUND(@numero*20,0)/20
IF @valor < @numero SET @valor = @valor + 0.05 ELSE SET
@valor = @numero
RETURN (@valor)
END

si ejecutamos :

SELECT dbo.fn_obtienevalor(1.32)
SELECT dbo.fn_obtienevalor(1.35)
SELECT dbo.fn_obtienevalor(1.36)
SELECT dbo.fn_obtienevalor(1.40)

obtendremos 1.35, 1.35, 1.40 y 1.40 respectivamente.

Saludos,
Ulises

Hola Alfonso:
Si quires redondear en bloques de 5, debes usar la


funcion que explica
Gustavo con un truco que es multiplicar por 20 y dividir


por 20.
SELECT ROUND(123.46*20,0)/20
El multiplicar por 20, redondera y luego dividir por 20


te debe brindar el
resultado deseado. .
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gustavo Larriera [MVP]


escribio:
Puedes probar con ROUND, algunos ejemplos del Books




Online:

SELECT ROUND(123.4545, 2) -> 123.4500SELECT ROUND




(123.45, -2) ->
100.00SELECT ROUND(150.75, 0) -> 151.00SELECT ROUND




(150.75, 0, 1) ->
150.00

"Alfonso Garcia" wrote in




message
news:uc$
Hola Grupo
Necesito saber cómo se hace en SQL ele redondedo de






números de 5 en 5
centésimas. Lo expresaré con un ejemplo: si tengo la






medida 1.32 cm
quiero facturar 1,35. Si la medida es 1.36 facturo






1.40.
Un saludo

Alfonso J
Respuesta Responder a este mensaje
#5 Javier Loria
30/11/2003 - 00:19 | Informe spam
Hola:
No me di cuenta que el requerimiento era rendodear hacia arriba :(
El codigo de Ulises queda un poco mejor asi:
ALTER FUNCTION dbo.fn_obtienevalor
( @numero decimal(15,2) )
RETURNS decimal (15,2)
AS
BEGIN
RETURN FLOOR((@Numero+.0499999)*20)/20
END

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
ulises escribio:
Con el permiso de Javier, le haría una pequeña suma para
obtener lo deseado por Alfonso; si lo manejamos en una
función :

CREATE FUNCTION dbo.fn_obtienevalor
( @numero decimal(15,2) )
RETURNS decimal (15,2)
AS
BEGIN
DECLARE @valor as decimal(15,2)
SELECT @valor = ROUND(@numero*20,0)/20
IF @valor < @numero SET @valor = @valor + 0.05 ELSE SET
@valor = @numero
RETURN (@valor)
END

si ejecutamos :

SELECT dbo.fn_obtienevalor(1.32)
SELECT dbo.fn_obtienevalor(1.35)
SELECT dbo.fn_obtienevalor(1.36)
SELECT dbo.fn_obtienevalor(1.40)

obtendremos 1.35, 1.35, 1.40 y 1.40 respectivamente.

Saludos,
Ulises

Hola Alfonso:
Si quires redondear en bloques de 5, debes usar la funcion que
explica Gustavo con un truco que es multiplicar por 20 y dividir por
20. SELECT ROUND(123.46*20,0)/20
El multiplicar por 20, redondera y luego dividir por 20 te debe
brindar el resultado deseado. .
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gustavo Larriera [MVP]


escribio:
Puedes probar con ROUND, algunos ejemplos del Books Online:

SELECT ROUND(123.4545, 2) -> 123.4500SELECT ROUND (123.45, -2) ->
100.00SELECT ROUND(150.75, 0) -> 151.00SELECT ROUND (150.75, 0, 1)
-> 150.00

"Alfonso Garcia" wrote in message
news:uc$
Hola Grupo
Necesito saber cómo se hace en SQL ele redondedo de números de 5
en 5 centésimas. Lo expresaré con un ejemplo: si tengo la medida
1.32 cm quiero facturar 1,35. Si la medida es 1.36 facturo 1.40.
Un saludo

Alfonso J
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida