Fórum Erro ao calcular arredondamento 13,715 -gt; 13,71 !!! #55694
04/04/2006
0
Sou Desenv. Deplhi-7 X IB/FB + DbExpress
Tenho o seguinte problema. :oops:
Estou lendo valor de uma etiqueta de Balanca
cujo valor é de: R$ 13,72 e peso de 1.055 kg.
O peso Unitário no cadastro do produto é de: R$ 13,00.
Ao imprimir num relatorio, faço o calculo:
1.055kg * R$ 13,00 => 13,715.
Tento arrendodar para 13,72 e o calculo fica errado
imprimindo R$ 13,71.
Bom sei que em matemática valores decimais c/ arredondamento
de 2 casas decimais 0-4 mantem as 2 decimais e de 5-9 p/ cima.
Ex: 13,710 => 13,71
13,711 => 13,71
13,712 => 13,71
13,713 => 13,71
13,714 => 13,71
13,715 => 13,72
13,716 => 13,72
13,717 => 13,72
13,718 => 13,72
13,719 => 13,72
Então quem está errando o calc. no Delphi ou a Balanca ao arredondar ?
Estou usando p/ Arredondar RoundTo(Valor,-2).
Obs: Já pesquisei no Site, mas encontrei a solução.
Sem +
ANT.CARLOS/SP
Ant.carlos/sp
Curtir tópico
+ 0Posts
06/04/2006
Edilcimar
Gostei + 0
03/05/2006
Larry
Não sei explicar porque, mas se alguem duvidar é só testar (Delphi6):
- Situação 1
var v:real; (ou double)
begin
v:=13.715;
edit1.text:=format(´¬n´,[(v)]);
end;
Vai aparecer no edit1 13,71
- Situação 2
var v:currency; (ou extended)
begin
v:=13.715;
edit1.text:=format(´¬n´,[(v)]);
end;
Vai aparecer no edit1 13,72
Gostei + 0
03/05/2006
Ant.carlos/sp
Olá!
Caros colegas, obrigado pela atenção.
Bom, usando RoundTo(X, -2) e outras formulas para arrendondar, não deu certo. Então lancei mão de um recurso não muito elegante mas funcionou: Valor := StrToCurr(FormatFloat(´000000.00´,Valor)), ai funcionou.
Sem +
ANT.CARLOS/SP
Gostei + 0
03/05/2006
Sremulador
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)