none
Arredonda ultima casa decimal RRS feed

  • Pergunta

  • Boa tarde a todos, alguém conhece alguma função que eu possa arredonda apenas a ultima casa ? Por ex?
    Obs: campo tipo money


    Tenho um numeral:    123,123
    quero que ele fique da seguinte forma    123,120

    será que essa façanha é possivel ?
    terça-feira, 22 de dezembro de 2009 15:37

Todas as Respostas

  • bom

    existe o round(campo,numerodecasas)

    Mas o SQL nao tem nenhum comando de formataçao, portanto
    select round(123.123,2)

    resultado
    123.12

    que é igual a 
    123.120 :)

    Agora
    select round(123.129,2)

    o resultado é
    123.13 

    se vc quiser truncar a ultima casa decimal vai ter que fazer
    select floor(123.129 * 100)/100
    o resultado é
    123.12



    att

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    terça-feira, 22 de dezembro de 2009 15:51
  • William, obrigado pela informação, mas seguinte tentei com o ROUND mas o problema dele que arredonda toda a minha seguência numérica, preicaria que arredondassse só a ultima para 0...
    terça-feira, 22 de dezembro de 2009 16:00
  • como vc esta fazendo o round... nao entendi o que vc quiz dizer com arredonda toda a minha seguência numérica. Me de um exemplo.

    0 a direita do ponto decimal sempre serao ignorados. Nao tem como fazer dentro do SQL algo como 1.0000. O resultado sempre sera 1

    Se vc quiser formatar , terá que ser obrigatoriamente na sua interface


    att

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    terça-feira, 22 de dezembro de 2009 16:04
  • Entendi, o que vc quiz dizer. por ex:   123,99999   ele arredonda para 124 precisaria que arredondasse só a ultima no caso 123,99990
    terça-feira, 22 de dezembro de 2009 16:10
  • ANDRÉ, sempre ira arredondar a última casa p/ zero ?


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    terça-feira, 22 de dezembro de 2009 17:56
  • Nao.. 

    Eu nao disse que se vc tem 123,99999   ele arredonda para 124... apesar que é isso que ele vai fazer se vc usar "round"

    Pelo que eu entendi, vc nao quer arredondar, e sim tuncar...

    arredondar: round(1.54,1) = 1.5 e round(1.56,1)=1.6
    Truncar:  trunc(1.54,1) = 1.5 e trunc(1.56,1)=1.5  * nao existe essa funcao trunc no SQL... teria que implementar. usei como exemplo


    Dai vc tem que fazer (por exemplo truncar na 2 casa decimal
    select floor(123.999999 *100)/100

    se for na terceira casa
    select floor(123.999999 *1000)/1000

    se for na quarta casa
    select floor(123.999999 *10000)/10000

    e assim vai 

    NAo existe como por 0 a direita do ponto decimal. Faça um teste

    Select convert(float,1.12345000000000000) as valor

    e veja o resultado.

    Mas para truncar somente a ultima casa e se isso for variavel (se vc nao sabe quantos decimais vai ter) entao a coisa complica.... sinceramente eu nao sei se vai ter jeitode fazer isso por dentro do SQL sem usar T-SQL

    Nos explique qual é sua necessidade de fazer isso

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    terça-feira, 22 de dezembro de 2009 18:19
  • André,

    Este arredondamento seria para cima ou para baixo?

    Você já tentou utilizar a função Ceiling?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 22 de dezembro de 2009 23:52
  • Colega, utilize a função Round(campo,número de casas depois da vírgula desejadas), indicando a quantidade de casas decimais você deseja.

    Ex: select round(456.9993,3)

    Resultado: 456.9990

    Agora, se tiver que arredondar para cima (depende da última casa), ficará assim:

    select

     

    round(456.9996,3)

    Resultado: 457.000

    sábado, 18 de dezembro de 2010 01:41