Erro ao calcular arredondamento 13,715 -gt; 13,71 !!!
Olá!
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
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
Curtidas 0
Respostas
Edilcimar
04/04/2006
talvez o problema esteja com a balança, pois ela pode já estar arredondando, ou seja vc tem um valor 13.7146 e ela arredonde visualmente para 13,715
GOSTEI 0
Larry
04/04/2006
Oi,
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
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
Ant.carlos/sp
04/04/2006
:idea:
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
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
Sremulador
04/04/2006
se você fizer um cast na sql vai funcionar tb...
GOSTEI 0