[firebase-br] Problema casas decimais

Felipe Aron felipearon em gmail.com
Sex Jul 15 09:49:18 -03 2011


Fazendo o cálculo dá: 428,625 - logo o erredondamento é para cima = 428,63.

No Delphi evite usar variável Float. Existe o problema do ponto flutuante em
cálculos. Use tipo Currency!

Exemplo do erro usando float:

var1 Real = 0.01;
var2 Real = 0.01;

var1 = var2 ? FALSE! --> Problema do ponto flutuante...

Isso é um exemplo simples, mas envolvendo cálculos, principalmente divisão a
coisa se torna pior. Eu mesmo já tive problemas de divisão. Hoje em dia uso
apenas tipo Currency e não tenho mais problema.


Em 15 de julho de 2011 08:47, Ademir - Branco Sistemas <
ademir em brancosistemas.com.br> escreveu:

> 2.857,50 * 0,15 = 428,625
>
> -----Mensagem Original----- From: Samuel M. Basso
> Sent: Friday, July 15, 2011 8:18 AM
> To: FireBase
> Subject: [firebase-br] Problema casas decimais
>
> Bom dia.
>
> Estou tendo problemas com casas decimais, diferença de centavos, utilizo
> Delphi 7 e Firebird.
>
> Os campos:
> ALQ_IPI NUMERIC(5,3)
> VLR_B_CAL_IPI NUMERIC(11,2)
> VLR_IPI NUMERIC(11,2)
>
> O calculo no delphi:
> ItensVLR_IPI.Value := ItensVLR_B_CAL_IPI.Value * (ItensALQ_IPI.Value /
> 100);
>
> ItensVLR_IPI.Value := 2.857,50 * 0,15
> ItensVLR_IPI.Value = 428,62
>
> Agora se eu fizer na calculadora:
> 2.857,50 * 0,15 = 428,63
>
>
> Diferença de 1(UM) centavo.
>
>
> Alguém tem idéia do motivo do delphi dar essa diferença? Como os campos no
> banco de dados estão com 2 casas decimais o delphi não deveria arredondar?
>
> --
>
>
> Atenciosamente,
>
> *Samuel M. Basso*
> Fone: (54) 3462-5522
> Cel: (54) 8135-3723
> Skype: samuelbasso
> Twitter: @samuelbasso
> E-mail/MSN: samuelbasso em gmail.com
> Web site: www.otimizy.com.br
> ______________________________**________________
> 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<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<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<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



-- 
Analista-Programador
#FollowMe: @felipearon <http://twitter.com/felipearon> (
http://felipearon.net)



Mais detalhes sobre a lista de discussão lista