[firebase-br] Integer overflow durante operação aritmética [RESOLVIDO]

Rodrigo A. de Freitas rodrigo em solucoeseinformatica.com.br
Qua Nov 1 08:49:37 -03 2006


Consegui resolver o problema do arredondamento declarando todos os campos
envolvidos na operação como DOUBLE PRECISION.

De qualquer forma, alguém sabe responder porque o erro "integer overflow"
ao efetuar a divisão por um valor float ?


[]'s

Rodrigo A. de Freitas

Análise & Desenvolvimento
Soluções & Informática

> Salve pessoal da lista!
>
> Estou com o seguinte problema:
>
> Eu tenho uma SP (usando FB 1.5.3, dialeto 3) que efetua diversas rotinas
> após a emissão do cheque. Dentre essas rotinas, eu tenho uma em específico
> que me gera um lançamento contábil, e em determinado momento eu preciso
> fazer um cálculo de proporcionalidade em um valor.
>
> O problema é que, para que o cálculo me retorne o valor correto, eu
> preciso utilizar TODAS as casas decimais possíveis. Para tanto, eu
> declarei a variável CTB_VALOR_RATEADO como FLOAT. ex.:
>
> /* RATEIA O VALOR PROPORCIONALMENTE AO VALOR PAGO DO TÍTULO */
>
> CTB_VALOR_RATEADO = (VALOR / VALOR_TOTAL);
> CTB_VALOR_PAGO = (CTB_VALOR * CTB_VALOR_RATEADO);
>
>
> os campos acima possuem os seguintes valores:
>
> VALOR = 6788,14
> VALOR_TOTAL = 19548,80
> CTB_VALOR = 19548,80
>
> o resultado da divisão VALOR / VALOR_TOTAL retornado pelo FB é
> 0,347200006246567.
>
> Problema 1: ao multiplicar o valor obtido pelo conteúdo do campo
> CTB_VALOR, o FB me dá o erro "Integer overflow.  The result of an integer
> operation caused the most significant bit of the result to carry"
>
> Problema 2: o resultado da divisão é incorreto; O cálculo deveria ter dado
> 0,34724075135046652479947618268129 (testado pela calculadora do windows)
>
> Alguém tem uma pista de porque o FB calculou errado a divisão e porque eu
> recebo essa excessão ao multiplicar os valores ?
>
> []'s
>
> Rodrigo A. de Freitas
>
> Análise & Desenvolvimento
> Soluções & Informática
>
>
>
>
> ______________________________________________
> 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
>
>






Mais detalhes sobre a lista de discussão lista