none
Redondear siempre hacia arriba

    Question

  • Hola amigos del foro, bien tengo esta pregunta por que la funcion Round() me redondea al entero mas proximo, pero no siempre al superior, es decir, si hago: select ROUND (5.4, 0) el resultado es 5.

    La pregunta es como hacer para que redondee a 6?  

    Gracias por susu aportes

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Core Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Wednesday, May 04, 2011 10:08 PM

Answers

All replies

  • Las funciones que redondean lo hacen dependiendo de si el decimal es mayor o menor que cinco (como es el caso de round).

    Si sale 2,4 la funcion round(2,4) devuelve 2 y tu quieres 3.
    Si sale 2,5 la funcion round(2,8) me devuelve 3 que es lo que quieres...

    ¿Pero obligar a redondear hacia arriba siempre? Mmmmm... Si usas: "FLOOR (Transact-SQL)" (http://technet.microsoft.com/es-es/library/ms178531.aspx)


    Puedes redondear el numero a su entero y sumarle 1, (yo descarto de que tendras numeros negativos):

    Set @Num = 5.4

    IF FLOOR(5.4) > 0
    BEGIN
     Set @Num = FLOOR(5.4) + 1
     Print @Num
    END
    ELSE
     Print @Num

     


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008


    Wednesday, May 04, 2011 11:23 PM
  • Preferible que use la funcion CEILING, que es lo contrario a FLOOR, y no tiene que preocuparse de los valores negativos.

     

    SELECT CEILING(5.4), CEILING(-5.4);
    GO
    
    
    /*
    
    6	-5
    
    */
    
    
    

     


    AMB

    Wednesday, May 04, 2011 11:59 PM
  • Muchas gracias, era justo lo que andaba buscando :D . . . que excelente funcion!!

    Saludos, y gracias de nuevo.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Core Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Thursday, May 05, 2011 2:01 PM