[firebase-br] Numeric(15,2) maluco...

Walter Portugal walter_cangere em hotmail.com
Ter Jun 13 08:53:41 -03 2006


É o seguinte:
 
Pelo que eu sei, no Firebird, os campos numéricos são armazenados no banco como Long Integer e guardando a precisão. Portanto, se você enviar um determinado valor para um campo numérico sem arredondá-lo antes, mesmo ele sendo (15,2), estará armazenando a precisão completa.
 
Não sei se ajudei, mas já tive esse problema várias vezes com implementações legadas que não tratavam esse problema e causando grandes problemas de cálculos nos sistemas...
 
T+,
 
Walter



> Date: Mon, 12 Jun 2006 10:59:38 -0300> From: news.pj em gmail.com> To: lista em firebase.com.br> Subject: [firebase-br] Numeric(15,2) maluco...> > Pessoal, desta vez é o seguinte...> > A tabela tem os seguintes campos :> > codigo ( Inteiro) ,> qtd ( Inteiro),> vlrund Numeric(15,2),> Total Numeric(15,2).> > Esta tabela é alimentada pela aplicação do cidadão lá. Fizemos o> seguinte teste via IBExpert:> > Select codigo, qtd, vlrUnd, valor, Cast(qtd*vlrUnd as Numeric(15,2)) Calculado> from Tabela> where Cast(qtd*vlrUnd as Numeric(15,2))<>valor> > Como resultado, tivemos algo assim :> > codigo    QTD VLRUND           TOTAL         CALCULADO> 10534       54      270,24        14592,96               14592,96> 10212     12       288,45          3461,40                3461,40> 10312        12      288,45          3461,40                3461,40> 11082        31      236,65          7336,15                7336,15> 10260      60      270,24        16214,40              16214,40> > E por aí vai...> > No olho, onde está a diferença? Até levamos pro excel pra ver se tinha> a ver com aproximação decimal, tira-teima... Nada! Voltamos ao> IBExpert, e visualmente tudo OK. Então clicamos 2x sobre o campo> "Total", na primeira linha e lá apareceu : 14592,9599999999991. Visto> isso, clicamos também no campo "Calculado". E lá apareceu :> 14592,960000000001. Ahááá !!!> > Daí...> > Alguém sabe explicar que loucura é essa? Como contornar essa> maluquice? Na aplicação os dados são passados para o insert já> arredondados para 2 casas decimais.Será o firebird, via Numeric,> fazendo doideira ou o IBExpert que tem bug? Firebird 1.5 RC2, IBExpert> 2.5.0.22 Personal Edition. Alguém vá viu isso?> > At,> Pedro.> > ______________________________________________> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
_________________________________________________________________
Porque enviar email pelo seu celular deve ser fácil: experimente a versão beta do Windows Live Mail for Mobile
http://ideas.live.com/programpage.aspx?versionId=6e782662-5f2a-4161-a64a-7f63644e1f0a


Mais detalhes sobre a lista de discussão lista