RES: [firebase-br] Stored Procedures & Delphi

Eduardo eduardo em cuper.com.br
Qui Mar 31 14:21:50 -03 2005


Também temos esse problema de arredondamento por aqui, como faço pra
adquirir essa unit ???

Eduardo Suruagy do Amaral Costa
Analista Desenvolvedor
Cuper Informática e Assessoria Ltda.
(82) 9902-1282
(82) 327-2463
www.cuper.com.br
desenvolvimento em cuper.com.br
eduardo em cuper.com.br
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de eduardo
Enviada em: quinta-feira, 17 de março de 2005 18:55
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] Stored Procedures & Delphi

Adilson

Este problema de arredondamento e valores de ponto flutuante é um 
inferno. Arredondamento de ponto flutuante depende das caracterísiticas 
do processador e não da linguagem de programação envolvida. Talvez seja 
por isso que em uma estação ocorre o problema e em outra não.

Toda vez que vc pede um valor AsFloat, você está sujeito a 2+2 ser algo 
como 3,99999999.

Se você usar AsCurrency, as FMTBCD ou AsBCD, teoricamente, os problemas 
acabam, desde que no BD seus campos não sejam Float e sim Numeric(N,N);

Para cálculos internos dentro de seu Aplicativo, há uma Unit que 
arredonda segundo 9 critérios diferentes e paraticamente garante que 
4,04 não é 4,0399999. Utilizamos aqui com bastante sucesso.

o link para baixá-la é http://cc.borland.com/ccweb.exe/listing?id=21909

ou no Google DecimalRounding_JH0

Espero tê-lo ajudado

[]s Eduardo

Adilson Capua Jr. wrote:
> Desculpe se for OFF, não tenho certeza! Bom, alguém já tentou receber
algum parâmetro do tipo NUMERIC(12,2) usando uma SP pelo Delphi? Há um bom
tempo atrás, quebrei a cabeça durante um bom tempo achando que uma rotina de
caixa que eu tinha estava errada, visto que ele dava uma diferença de
centavos no saldo final. Depois de muito apanhar, descobrir que quando o
saldo dava 200,45 por exemplo o Delphi recebia da SP somente 200,40... Bom,
fiz uns ajustes e tive que salvar esse saldo numa tabela e através de um
select buscava.
> Hoje isso aconteceu novamente... Tenho um programa que usa micro-terminais
para coleta de dados e um determinado cliente me ligou hoje dizendo que,
quando lança uma ocorrência pelo sistema, fica certo. Quando lança pelo
terminal ... PUM... erro no valor... O terminal não utiliza tabela nenhuma
para se comunicar com o banco... Simplesmente ele dispara sp's que se
encarregam do serviço. Só que tem uma SP que tem que retornar um valor de
ponto-flutuante (12,2) para o terminal executar um cálculo e devolver para
outra SP... Sim, talvez eu poderia fazer tudo dentro do banco, mas creio que
isso vai levar algum tempo, até eu reescrever...
> Alguém já passou por isso??? Como resolveu o problema...
> 
> Estou usando o Delphi 7, DBX e Firebird 1.5!!!
>  
> []'s
>  
> Ps.: CANTU, desculpe se isso é OFF, mas tem problemas que a gente descobre
que ficar postanto em áreas do Delphi ninguém vai responder ou pelo menos
ter uma idéia, visto que o problema está justamente em passar/receber um
parâmetro do nosso Firebird para o Delphi! De qualquer
> forma, vou postar o assunto no News também...
>  
>  
> 
> 
> 
> Adilson Bragança Cápua Jr.
> Linhares - ES                         Brasil
> mailto: juniorcapua em yahoo.com.br
> "Save a tree. Send an e-mail."
> 
> 		
> ---------------------------------
> Yahoo! Mail - Com 250MB de espaço.  Abra sua conta!
> ______________________________________________
> 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
> 


______________________________________________
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

-- 
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.7.3 - Release Date: 15/03/2005
 

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.8.4 - Release Date: 27/03/2005
 





Mais detalhes sobre a lista de discussão lista