[firebase-br] Fwd: Problema com Double

marlon david de souza marlon em sysmo.com.br
Seg Maio 30 06:24:50 -03 2005


Bom dia Eduardo,

  Primeiramente obrigado pela atenção.
  Eu também somente utilizo o tipo Currency no sistema. No entanto os 
componentes de terceiros que eu utilizio (exp: gerado de relatórios) bem como 
os componentes nativos usam extensivamento o tipo "double", por isso é que 
estou enfrentando este problema.
  Eu citei o caso do CNPJ, pois no FB eu defini este campo como 
"numeric(18,1)". Então ao recuperar este valor no sistema, como internamente 
a função "AsCurrency" utiliza uma váriavel do tipo "double", o valor vem 
incorreto.
  Sem dúvida é muito estranho o que está ocorrendo e por enquanto não 
encontrei nenhuma alternativa.

Sem mais, 

----------------------
Marlon David de Souza
Desenvolvimento
Sysmo Informática Ltda

-----------------------------------------------------------------------------------------------------------------------------

> Em Dom 29 Mai 2005 20:34, eduardo escreveu:
> Oi Marlon
>
> Este é o problema dos Floats
>
> Os tipos que vc pode usar para não incorrer neste problema são o
> Integer, Int64 e o Currency.
>
> Extended, Single e Double te darão o mesmo problema.
>
> Quanto ao caso ds impressoras, realmente não sei explicar. O que sei é
> que o comportamento dos floats é relacionado ao processador,e por essa
> razão se comportam diferentes em máquinas diferentes.
>
> Eu, particularmente não ustilizo campos Float e tenho utilizado Currency
> ao invés de Extended e tenho me livrado destes problemas de
> float/arredondamento.
>
> No seu caso, para um valor inteiro grande, aconselho o INT64
>
> []s Eduardo
>
> marlon david de souza wrote:
> > Boa tarde a todos,
> >
> >   Alguem já viu algo parecido?
> >   Ao atribuir alguns números inteiros grandes (exp: CNPJ) para variáveis
> > do tipo "double", estes estão ficando com casas decimais. Exemplo:
> >
> >     var
> >       tst: Double;
> >     .
> >     .
> >     tst := 33641358237322; // Ao consultar o valor desta variável, está
> > retornando o valor 33641358237321,9968
> >
> >   Ao procurar o problema, constatei que este problema somente acontece em
> > algumas máquinas que possuem instalado impressoras mais recentes. Se eu
> > excluo a impressora ou instalo uma mais antiga (exp:HP 695C), daí
> > funciona.
> >
> >   Será que isso tem solução? Obs: a resposta pode ser em "private"!
> >
> >
> > Sem mais, agradeço antecipadamente a atenção
> >
> > ----------------------
> > Marlon David de Souza
> > Desenvolvimento
> > Sysmo Informática Ltda
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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