Fórum Duvidas com casas Decimais. #233814

22/05/2004

0

Galera, mais uma vez venho pedir um auxilio a galera do fórum.
Tenho um pequeno problema.

Bom vou explicar. Aquelas balanças de peso (pesar legumes, carnes, etc) retorna o seguinte valor para mim de acordo com a informação abaixo.

Peso : 0,60g
Preço do Produto: 2,89
O resultado : 1,73

Se eu fizer isto na calculadora convencional da o valor 1,734.

No meu sistema de Pdv ele le a balanca e retorna o peso corretamente, e o sistema faz o calculo e dá 1,734 e com o arrendondamento mostrando na tela da 1,73.
Bom, mas se eu colocar 2 vezes o mesmo item, o computador dá 3,47 resumindo, se eu somar o valor mostrado na tela 1,73 + 1,73 teria que dar 3,46 mas nao da, da o valor 3,47 pois o calculo que a maquina faz é de 3,468, logicamente que a maquina vai aproximar para 3,47,
E ai eh que mora o meu problema, tenho que mostrar 3,46 pois se mostrar 3,47 o cliente que esta fazenda a compra reclama por causa de 0,01 (eh mole !!!!, mas eh isto que esta acontecendo e preciso resolver isto com a maxima urgencia)
Entao como fazer para ele mostrar 3,46 em vez de 3,47 ???????

Grato pela ajuda de todos.

Objetiva Creator.


Objetivacreator

Objetivacreator

Responder

Posts

22/05/2004

Maxadens

Peque o valor 1,734 e multiplica por 100.
O resultado sera 173,4.
Execute a função trunc que ela retornará a parte inteira
Divida o valor por 100.
Veja o exemplo:

var A: double
begin
A:=StrToFloat(Edit1.text) // Atribui valor à variável A
A:=A*100;
A:=trunc(A);
A:=A/100;
Edit2.text:=FloatToStr(A) // retorna o valor aredondado;
end;

Garanto que funciona. Agora... se vc quizer que arredonde para cima, tera que trabalhar e implementar esta função;

Espero ter ajudado e precisando estamos ai

Um Abraço!

Ronaldo Araujo


Responder

Gostei + 0

23/05/2004

Edilcimar

ou utilize uma variável tipo currency que ela já faz o arredondamento automaticamente


Responder

Gostei + 0

23/05/2004

Aroldo Zanela

Colegas,

O tipo currency utiliza uma precisão de quatro casas decimais. No caso, pode-se utilizar a função RoundTo ou SimpleRoundTo, ou ainda, utilizar o exemplo descrito anteriormente pelo Edilcimar. Exemplo:

NewValue := RoundTo(OldValue, -2);



Responder

Gostei + 0

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

Aceitar