none
Ignorar uma qtde de casas decimais sem arredondar.

    Question

  • Caros companheiros, minha questão é a seguinte:
    gostaria de saber se existe algum meio rápido para ignorar um certo número de casas decimais, sem arredondar ...

    o valor que tenho em um campo de uma tabela eh, por exemplo: 172.4389

    porém, ao final de alguns cálculos com este número, eu preciso ficar com ele na tabela com apenas 2 casas decimais, ou seja, apenas 172.43, sem arredondar para 172.44.

    o tipo de campo que abriga este número eh DECIMAL(18,4) ... eu precisava que ele ficasse como DECIMAL(18,2), porém quando modifico o tipo de campo ele arredonda o número com citado acima, porém eu preciso que ele ignore os números das demais casa decimais e não arredonde.

    alguma sugestão?
    Monday, August 06, 2007 5:14 PM

Answers

  • Anderson você pode usar o comando.

     

    Code Snippet
    SELECT
    CAST(ROUND(172.4389, 2,1) AS DECIMAL(18,2))

     

     

    Pessoal estão esquecendo que o comando ROUND também pode ser usado para truncar valores.

     

    Valeu!'

    Tuesday, August 07, 2007 1:16 PM

All replies

  •  

    Olá Anderson!

     

    Você pode fazer isso convertendo primeiro para texto, depois cortando esse texto, veja o exemplo:

     

    Code Snippet

    declare @v decimal (18,4), @v2 decimal (18,2)

    set @v = 172.4389

    select @v2 = substring (convert (varchar, @v), 1, len (convert (varchar, @v)) - 2)

    select @v2

     

     

     

    Qualquer dúvida, retorne.

     

     

    Abraço

    Monday, August 06, 2007 5:45 PM
  • Olá Alexandre!

    Fico muito grato pela atenção dada à questão ... na verdade, eu já tinha conseguido chegar em algo assim mesmo ... se não tiver outro jeito, vou acabar fazendo como vc me sugeriu, porém eu estava pensando se o SQL Server 2000 não possúi nenhuma variável de ambiente ou qq coisa nesse sentido q impedisse o arredondamento automático dos valores ...

    Sabe de alguma coisa nesse sentido ? a coisa iria ficar mais confortável pra mim, pq esse situação que citei eh feita com certa frequencia por aqui ...

    Grato pela atenção, mais uma vez.

    Monday, August 06, 2007 5:58 PM
  •  

    Anderson,

     

    Como o SQL trabalha com números precisos, sempre que reduzir a quantidade de casas decimais ele vai arredondar. Vai ter que ser daquele jeito mesmo

     

     

    Abraço

    Monday, August 06, 2007 6:13 PM
  • Anderson,

     

    Concordo com o Alexandre, o SQL Server trabalha para realizar a conversão de valores com casas decimais com o objetivo de retornar o valor da melhor forma, ou seja, o mais preciso possível.

     

    Por isso, muitas vezes a conversão é realizada e o retorno de casas decimais é retornada.

     

    Analisando o exemplo do Alexandre, eu também não conheço outra alternativa que resolva melhor a sua dúvida, com certeza esta solução poderá ajudar.

     

    Monday, August 06, 2007 7:00 PM
  • Anderson você pode usar o comando.

     

    Code Snippet
    SELECT
    CAST(ROUND(172.4389, 2,1) AS DECIMAL(18,2))

     

     

    Pessoal estão esquecendo que o comando ROUND também pode ser usado para truncar valores.

     

    Valeu!'

    Tuesday, August 07, 2007 1:16 PM
  • Fabiano,

     

    Parabéns pelo exemplo, trata-se de uma solução muito simples e prática.

     

    Obrigado pela informação!!!

    Tuesday, August 07, 2007 2:27 PM
  • Fabiano,

    cara, muito obrigado ... você não sabe o quanto me adiantou de serviço agora ! Ficou muito simples a resolução, bem do jeito que eu precisava.

    Obrigado mais uma vez.

    Wednesday, August 08, 2007 12:25 PM