[firebase-br] RES: Integer OverFlow no cálculo baseado na tabela price
Jose Aparecido da Silva
joseasilva em bol.com.br
Sex Jan 29 15:25:32 -03 2010
Tive um problema assim outro dia e após muita tentativa resolvi utilizando
Doublé Precision
Pelo meu entendimento não deveria estourar, mas o FB não aceito o calculo
dentro da procedure
[ ]'s
Jose Aparecido da Silva
Fasystem
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Altair Aquino
Enviada em: sexta-feira, 29 de janeiro de 2010 12:04
Para: FireBase
Assunto: Re: [firebase-br]Integer OverFlow no cálculo baseado na tabela
price
Amigo já tentou com FLOAT?
Altair O. Aquino
_______________________________
Software Engineer
J2EE/Struts/GWT/Hibernate
E-mail/Gtalk: altairaquino em gmail.com
MSN: altairaquino em hotmail.com
Phone: +55 85 9608-9771
2010/1/29 Junior Miranda <jrmiran em gmail.com>
> Caros mestres...
> ...Estou com o seguinte problema quando tento fazer um cálculo baseado na
> tabela PRICE (integer OverFlow). Sei que este erro é provocado, quando
> ultrapasso a faixa limite de um tipo de dado. Já tentei fazer cast de tudo
> quanto foi geito. Mas em determinados valores, olha ele lá de volta.
> Qualquer ajuda será bem vinda.
>
> Utilizo:
> O Firebird 2.0 com Dialect 3;
> Os Campos MyTaxa, MyBase, MyResult e MyBase são do Tipo Numeric(18,8).
> Usei esta Precisão e Escala para diminuir ao máximo a possibilidade de
> perda.
>
> Pelo que já estudei, sob estas condições, o firebird armazenaria o valor
em
> um BigInt. Então o meu cálculo estaria ultrapassando o valor de um BigInt
?
>
> IF ((MYTAXA > 0) AND (MYPARCELAS > 0)) THEN
> BEGIN
> MYTAXA = CAST((:MYTAXA / 100) AS NUMERIC(18,8));
> MYBASE = 1 + CAST(MYTAXA AS NUMERIC(18,8));
> MYRESULT = MYBASE;
> MYINDEX = 1;
> WHILE (MYPARCELAS > MYINDEX) DO
> BEGIN
> MYRESULT = CAST(MYRESULT AS NUMERIC(18,8)) * CAST(MYBASE AS
> NUMERIC(18,8)); -- Erro aqui
> MYINDEX = MYINDEX + 1;
> END
> MYRESULT = CAST((:MYTAXA * MYRESULT) AS NUMERIC(18,8)) /
> CAST((MYRESULT - 1) AS NUMERIC(18,8));
> MYRESULT = CAST(:MYCAPITAL AS NUMERIC(18,4)) * :MYRESULT;
> END
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista