Array
(
)

Problemas ao obter peso

Valnei Reis
   - 01 dez 2009

Boa noite pessoal.

Estou tendo um pequeno problema, pequeno mesmo, mas não estou achando uma solução viável, tem coisas difíceis que eu consigo resolver mas esta esta me tirando do sério.
Já desenvolvi rotinas legais tipo informar a quantidade e código do produto (em barras) e ele me informar certinho o produto e a multiplicação da quantidade, tipo isto que ocorre nos supermercados. Quando adquirimos vários produtos do mesmo tipo o operador do caixa simplesmente digita a quantidade passa o produto no leitor e vuolá, ta pronto, isto eu consegui fazer usando poucas linhas de código, agora com isto, affff, que coisa.

Bom vamos ao problema.

Descrição do problema:
Aquelas etiquetas de balança, fazem um cálculo básico de divisão para obter o peso do produto.
Vamos ao exemplo

2085800002452 - Neste código de etiqueta da filizola, temos o 858 código do produto, 245, temos o valor do produto a ser pago.
Pegamos o preço do produto por kilo no banco de dados : Pão Frances a 4,99 Kg.
Para obter o valor em kg, pegamos o valor a ser pago, 2,45 e dividimos pelo preço do produto 4,99 o Kg, temos então na calculadora do windows o seguinte valor:

0,4909819639278557 - Valor da calculadora

No meu sistema temos o seguinte resultado : 0,491 Kg, na etiqueta da balança obtemos o peso de 0,490 Kg.

Agora vem a minha pergunta básica, como fazer para ele realmente retornar o peso correto no cálculo da divisão.

Trecho do código que utilizo:

nPreco_Lido: 2,45;

// Pego o valor do produto.
Preco_de_Venda := Dm.SQLDataSet1.FieldByName('Preco_Venda').AsFloat;
// Calculo nesta linha o kilo obtido pelo calculo
nKg_Obtido  := nPreco_Lido / Preco_de_Venda;
// Mostro o kilo obtido na tela.
Edit4.Text  := Format('%7.3n', [nKg_Obtido]) + ' KG';


Grato a todos que puderem dar uma pequena ajuda.

Valeu e Boa noite a todos.

Wilson Paulista...!!!
   - 02 dez 2009

Bom, pelo o que entendi, o seu sistema está arredondando o valor, e acrescentando mais "0,001", para ele não arrendondar o valor e mostrar o valor "0,490" utilize a função RoundTo, procure no help do Delphi que ele lhe explicará extamente como ele funciona.

Espero ter ajudado.

Wilson Paulista...!!!
   - 02 dez 2009

Ah, utilize a biblioteca "Math" no USES.

Bruno Batista
   - 02 dez 2009

Bom dia,

essa questão é complicada, pois tem que verificar se na hora de imprimir a etiqueta está arredondando ou truncando.

Nesse exemplo que você relatou, a balança está truncando.

para que fique com o valor correto, tem que utilizar o mesmo método nos lugares que utilizarem.

Atenciosamente,

Bruno Moreira Batista