Problemas con FLOOR y CEILING

01/07/2004 - 04:22 por Ivan Alexander Laverde | Informe spam
Holas

Estoy trajando con SQLServer 2000

y les cuento que trato de hacer la siguinte operacion de
prueba

declare @x decimal(10,2)
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
Select @x
select Floor(@x)
select Ceiling(@x)

y el Ceiling siempre saca 2 y deberia ser 3

Si hago
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
o
Select @x= (83 / (35 - 5))

Siempre es el mismo resultado

Pero si hago
select Ceiling(2.76) Si funciona

Que conversion debo hacer o como hago para que saque datos
reales????

Gracias por su colaboracion

Se que es tonto eso pero no me funciona

Preguntas similare

Leer las respuestas

#1 José Raúl Fenollar Martínez
01/07/2004 - 11:28 | Informe spam
En vez de esto
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
es esto
Select @x= 83.00 / (35.00 - 5.00)

lo que quiere decir que debes convertir losmiembros individuales de la
dic¡vión a su tipo correspondiente, y no el resultado:

declare @x decimal(10,2),
@dividendo decimal(10,2),
@divisor decimal(10,2)

select @dividendoƒ,
@divisor=(35 - 5)

Select @x=@dividendo/@divisor

select Floor(@x)
select Ceiling(@x)

Saludos desde Gandia

"Ivan Alexander Laverde" escribió en
el mensaje news:2421001c45f12$3e5d79e0$
Holas

Estoy trajando con SQLServer 2000

y les cuento que trato de hacer la siguinte operacion de
prueba

declare @x decimal(10,2)
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
Select @x
select Floor(@x)
select Ceiling(@x)

y el Ceiling siempre saca 2 y deberia ser 3

Si hago
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
o
Select @x= (83 / (35 - 5))

Siempre es el mismo resultado

Pero si hago
select Ceiling(2.76) Si funciona

Que conversion debo hacer o como hago para que saque datos
reales????

Gracias por su colaboracion

Se que es tonto eso pero no me funciona










Respuesta Responder a este mensaje
#2 Liliana Sorrentino
01/07/2004 - 13:51 | Informe spam
Hola Ivan,
El problema no está en FLOOR o CEILING, sino en los datos.
Estás manejando datos enteros, y aunque la variable receptora del resultado
esté definida con decimales, el resultado será un entero. Según los BOL,
"Cuando ambas expresiones de operandos tienen el mismo tipo de datos, el
resultado de la operación tiene ese tipo de datos."
Para solucionarlo podés convertir alguno de tus datos a decimal (10,2) :

declare @x decimal(10,2)
Select @x= (convert (decimal(10,2), 83) / (35 - 5))
Select @x, Floor(@x), Ceiling(@x)

Saludos... Liliana.

"Ivan Alexander Laverde" escribió en
el mensaje news:2421001c45f12$3e5d79e0$
Holas

Estoy trajando con SQLServer 2000

y les cuento que trato de hacer la siguinte operacion de
prueba

declare @x decimal(10,2)
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
Select @x
select Floor(@x)
select Ceiling(@x)

y el Ceiling siempre saca 2 y deberia ser 3

Si hago
Select @x= Convert(decimal(10,2),(83 / (35 - 5)),1)
o
Select @x= (83 / (35 - 5))

Siempre es el mismo resultado

Pero si hago
select Ceiling(2.76) Si funciona

Que conversion debo hacer o como hago para que saque datos
reales????

Gracias por su colaboracion

Se que es tonto eso pero no me funciona










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida