Fórum Erro ao calcular arredondamento 13,715 -gt; 13,71 !!! #55694

04/04/2006

0

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


Ant.carlos/sp

Ant.carlos/sp

Responder

Posts

06/04/2006

Edilcimar

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


Responder

Gostei + 0

03/05/2006

Larry

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


Responder

Gostei + 0

03/05/2006

Ant.carlos/sp

: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


Responder

Gostei + 0

03/05/2006

Sremulador

se você fizer um cast na sql vai funcionar tb...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar