none
problemas com números com muitas casas decimais. RRS feed

  • Pergunta

  • Boa Noite Pessoal,

    Estou com um grande problema, preciso gerar relatórios sobre depreciação de bens, ocorre que na geração da depreciação existem números que apresentam varias dizimas e frações por exemplo: 495.781250000 sendo assim na hora de gerar relatórios gera diferenças as vezes pra mais outras pra menos. Exemplo: preciso somar a coluna valorAtual, sendo que ela vai ter o total Geral e subTotais que formam o total geral. Quando eu gero os subtotais a soma deles separados gera um valor  diferente do total Geral, pois o Total geral e feito com (Round(sum valortotal),2) e os subtotais e da mesma forma (Round(sum valortotal),2) só que direciona para somar apenas os subtotais. olhem a figura :

    Eesse 89.816,79 e o total geral e internamente os subtotais que somados separados darão 89.816,80. já tentei arredondar os registros individualmente para depois deixar que o crytal reports faça as somas, já tentei truncar um número e arredondar o outro, mas nada é 100%, nada funciona correto sempre existe um valor que dá problema.... alguém já passou por situação dessas, tem alguma dica, algo.... Obrigado.

    domingo, 25 de outubro de 2015 22:50

Respostas

  • Bom dia,

    Acredito que seria necessário arredondar (ou truncar) o valor de todos os itens para 2 casas decimais antes da soma para que não ocorra essa diferença.

    Pela imagem, o valor dos itens ainda devem estar com mais de 2 casas decimais. Se você fizer um teste aumentando a quantidade de casas decimais no relatório deverá comprovar essa possibilidade.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta JAlvez42 segunda-feira, 26 de outubro de 2015 12:31
    • Marcado como Resposta Marcos SJ segunda-feira, 26 de outubro de 2015 12:34
    segunda-feira, 26 de outubro de 2015 11:29
  • Bom dia,

    Qual o tipo dos dados ?

    O ideal é que vc utilize numeric ou decimal e sempre utilizar a escala de 2 na sua configuração, dessa maneira os dados vão ser inseridos já arrendondados, se no banco já estiver certo, vc deve fazer isso no seu relatório, ajustando as casas decimais para exibir o valor correto, mas acredito que fazer isso na origem é o ideal.

    CREATE TABLE dbo.MyTable
    (
      MyDecimalColumn decimal(5,2)
     ,MyNumericColumn numeric(10,5)
    
    );
    
    GO
    INSERT INTO dbo.MyTable VALUES (123, 12345.12);
    GO
    SELECT MyDecimalColumn, MyNumericColumn
    FROM dbo.MyTable;
    MyDecimalColumn                         MyNumericColumn
    --------------------------------------- ---------------------------------------
    123.00                                  12345.12000
    
    (1 row(s) affected)

    Segue artigo sobre tipos de dados numeric e decimal da MSDN.

    Decimal e Numeric



    Flávio Farias
    "May the Force be with you"
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Marcos SJ segunda-feira, 26 de outubro de 2015 12:34
    segunda-feira, 26 de outubro de 2015 11:55

Todas as Respostas

  • Bom dia,

    Acredito que seria necessário arredondar (ou truncar) o valor de todos os itens para 2 casas decimais antes da soma para que não ocorra essa diferença.

    Pela imagem, o valor dos itens ainda devem estar com mais de 2 casas decimais. Se você fizer um teste aumentando a quantidade de casas decimais no relatório deverá comprovar essa possibilidade.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta JAlvez42 segunda-feira, 26 de outubro de 2015 12:31
    • Marcado como Resposta Marcos SJ segunda-feira, 26 de outubro de 2015 12:34
    segunda-feira, 26 de outubro de 2015 11:29
  • Bom dia,

    Qual o tipo dos dados ?

    O ideal é que vc utilize numeric ou decimal e sempre utilizar a escala de 2 na sua configuração, dessa maneira os dados vão ser inseridos já arrendondados, se no banco já estiver certo, vc deve fazer isso no seu relatório, ajustando as casas decimais para exibir o valor correto, mas acredito que fazer isso na origem é o ideal.

    CREATE TABLE dbo.MyTable
    (
      MyDecimalColumn decimal(5,2)
     ,MyNumericColumn numeric(10,5)
    
    );
    
    GO
    INSERT INTO dbo.MyTable VALUES (123, 12345.12);
    GO
    SELECT MyDecimalColumn, MyNumericColumn
    FROM dbo.MyTable;
    MyDecimalColumn                         MyNumericColumn
    --------------------------------------- ---------------------------------------
    123.00                                  12345.12000
    
    (1 row(s) affected)

    Segue artigo sobre tipos de dados numeric e decimal da MSDN.

    Decimal e Numeric



    Flávio Farias
    "May the Force be with you"
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Marcos SJ segunda-feira, 26 de outubro de 2015 12:34
    segunda-feira, 26 de outubro de 2015 11:55