Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Redondear al valor superior

Estas en el tema de Redondear al valor superior en el foro de Oracle en Foros del Web. ¿Alguien sabe cómo redondear con Oracle al valor superior? Es decir, si queremos coger dos cifras decimales, pasar de 12'351 a 12'36 (y no a ...
  #1 (permalink)  
Antiguo 22/07/2008, 01:38
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años, 7 meses
Puntos: 1
Redondear al valor superior

¿Alguien sabe cómo redondear con Oracle al valor superior?

Es decir, si queremos coger dos cifras decimales, pasar de 12'351 a 12'36 (y no a 12'35 como te pasaría la función round).
  #2 (permalink)  
Antiguo 22/07/2008, 02:53
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Respuesta: Redondear al valor superior

Hola,

No creo que exita una funcion que resuelva eso, ya que no es un redondeo, es mas bien sumarle 1 decimo, 1 centimo, 1 milesimo, etc a la parte decimal, con ese criterio es mas que facil crear tu propia funcion.

Saludos
  #3 (permalink)  
Antiguo 22/07/2008, 11:48
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Redondear al valor superior

HOLA QUE TAL,

En Oracle no Existe una Función que te hago eso. Sin embargo existe otra que te sube una cantidad
al entero más próximo (CEIL), y ya cone sa solo tienes que hacer algo como lo siguiente:

SELECT CEIL((12.249) * 100)/100 FROM DUAL
/


Espero te sea de Utilidad
  #4 (permalink)  
Antiguo 22/07/2008, 11:57
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Respuesta: Redondear al valor superior

Hola OscarH,

Ten en mente que talvez no sea siempre 3 decimales, sino, una cantidad variable. Por eso me referia a crear una funcion que evalue la cantidad de decimales y la cantidad de digitos final para el redondeo.

Como ejemplo, pasar de 12.12345 a 12.13, para esto se puede tomar como referencia la funcion round(number,n).

Edito, ejemplos claros :)

round2( 12.12345 , 2 ) = 12.13
round2( 12.12345 , 3 ) = 12.124

Saludos
  #5 (permalink)  
Antiguo 22/07/2008, 12:01
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Redondear al valor superior

Que Tal Matanga,

De Hecho te funciona con cualquier numero de decimales, y no como el Rond(number,2) que lo que haría es pasarte una cantidad hacia abajo o hacía arriba y el ceil siempre es hacía arriba.

programadornet, Para adaptar a tus necesidades, solo pasame tu problema concreto y la adaptamos a lo que necesitas, pero esta funciona bastante bien para ello.

Saludos.
  #6 (permalink)  
Antiguo 29/07/2008, 02:01
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Redondear al valor superior

Hola,

efectivamente Oscar se hacía así. Vi lo del ceil y se me ocurrió multiplicar y dividir para realizarlo con decimales, venía al tópic a decirlo pero veo que ya lo hiciste.

Saludos
  #7 (permalink)  
Antiguo 29/07/2008, 11:48
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Redondear al valor superior

Que tal,

Que bueno que pudiste resolverlo, ya que no estaba completamente seguro si ese era el problema que querías resolver.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:24.