none
Ignorar uma qtde de casas decimais sem arredondar. RRS feed

  • Pergunta

  • 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?
    segunda-feira, 6 de agosto de 2007 17:14

Respostas

  • 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!'

    terça-feira, 7 de agosto de 2007 13:16

Todas as Respostas

  •  

    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

    segunda-feira, 6 de agosto de 2007 17:45
  • 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.

    segunda-feira, 6 de agosto de 2007 17:58
  •  

    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

    segunda-feira, 6 de agosto de 2007 18:13
  • 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.

     

    segunda-feira, 6 de agosto de 2007 19:00
  • 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!'

    terça-feira, 7 de agosto de 2007 13:16
  • Fabiano,

     

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

     

    Obrigado pela informação!!!

    terça-feira, 7 de agosto de 2007 14:27
  • 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.

    quarta-feira, 8 de agosto de 2007 12:25