GARANTIR DESCONTO

Fórum Problemas em cálculo matemático #326012

24/07/2006

0

Caros colegas,

Tenho um frente de caixa onde o cliente digita os produtos e ao final da venda pode informar descontos por ¬ ou valor (básico). O desconto final eu gravo em valor e em ¬ no banco de dados.
Tenho um relatório que lista os produtos vendidos em um período e estou aplicando no produto a ¬ de desconto que foi concedida na venda. Ocorre que estão ocorrendo diferenças de cálculo, tendo em vista que às vezes a ¬ de desconto seria um número com muitas casas decimais.
Exemplo: R$ 870,00 com desconto de R$ 26,00. Calculando a ¬ seria 0,02988505747.

Pergunto: A solução seria armazenar um número com 10 ou 12 casas decimais, para ter precisão no cálculo dos descontos de cada item da venda? Ou existe uma outra maneira que eu não estou visualizando ?

Agradeço a colaboração,

Marcello


Marcello

Marcello

Responder

Posts

24/07/2006

Marco Salles

A solução seria armazenar um número com 10 ou 12 casas decimais, para ter precisão no cálculo dos descontos [b:a9953f08a6]de cada item da venda?[/b:a9953f08a6]

Marcelo , se todos os descontos forem iguais , não ha diferença entre aplicar Valor do desconto em cada item da Venda ou no total das venda

Matematicamente não existe diferença , Mas como computador trabalha com arredondamentos internos , o mais correto serai aplicar o Desconto no Final da Venda...

Voce diz que ha diferença de calculo .. Que diferença seria esta ???


Não ficou claro se o erro esta no Relatorio , no total desse relatorio , ou se o erro esta em cada venda ?? Sua duvida para mim esta meio no ar


Responder

Gostei + 0

24/07/2006

Marcello

:oops: Vou tentar explicar melhor:

O Relatório é de vendas por produto dentro de um período - um mês por exemplo. Eu pego cada produto e apuro quantos foram vendidos, por quanto foi vendido, quanto custou, e se houve desconto apresento o valor que foi dado de desconto no produto.
Então uma venda pode ter n itens, e o desconto realmente é dado no final e eu quero guardar a porcentagem de desconto que foi dada na venda, pois como o colega disse ´se todos os descontos forem iguais , não ha diferença entre aplicar Valor do desconto em cada item da Venda ou no total das venda´.
O erro esta no relatório, pois eu pego o valor do produto na época da venda e aplico a porcentagem de desconto que gravei, só que estou guardando a porcentagem com 3 casas decimais, então da diferença de centavos se comparar o relatório com a venda
Exemplo: Venda - R$ 870 com R$ 26 de desconto = R$ 844
Relatório: R$ 870 * 0,029 da R$ 25,23 de desconto = R$ 844,77
Considerando que este exemplo é com apenas 1 item.
Se eu fizer R$ 870 * 0,02988505747, aí sim da os R$ 844.
O que fazer ? Gravo todos estes numeros após a virgula ?


Responder

Gostei + 0

25/07/2006

Marco Salles

so mudando alguma coia de lugar.....

O erro esta no relatório, pois eu pego o valor do produto na época da venda e aplico a porcentagem de desconto que gravei,


porque voce não pega assim:

[b:f1396800d8]pego o valor do produto na época da venda e diminuo do valor do Desconto que gravei,[/b:f1396800d8]

Teria algum problema :?: :?:

Outra , esta é so uma opinião. Acho melhor trabalhar com valores porcentuais do que com valores decimais
2,988505.....é o valor percentual
0,029885..... é o valor decimal

A Grande diferença que se armazena mais digitos usando a mesma reperesentação.. Geralmente a precisão no primeiro caso é melhor
Assim:
(Valor*2,988505.....)/100 --->>resulta em algo mais preciso do que
(valor*0,029885.....)

muitas das vezes se usa esta tecnica para arredondar un numero...


Responder

Gostei + 0

25/07/2006

Marcello

pego o valor do produto na época da venda e diminuo do valor do Desconto que gravei,


Não posso fazer assim pois o desconto é informado sobre o total da venda, que pode ter vários produtos.

Outra , esta é so uma opinião. Acho melhor trabalhar com valores porcentuais do que com valores decimais 2,988505.....é o valor percentual 0,029885..... é o valor decimal


Muito boa idéia, vou aplicar.

Vc armazenaria então a porcentagem com mais casas decimais para resolver este problema ?


Responder

Gostei + 0

25/07/2006

Marco Salles

olhando de fora , eu acho que voce pode usar 4 casas decimais ou mesmo ate as tres que voce inicialmente esta usando , desde que voce aplique , uma função de arredondamento no Valor Do Desconto que saira no Relatório...

Por exemplo
var 
  X: Double; //valor de desconto que saira no relatorio
  X:=(870*2,988)/100;
  // arredonda o valor em duas casas decimais 
  X := 0.01 * Round(100 * X);



Responder

Gostei + 0

25/07/2006

Marcello

Marcos,

Fiz conforme seu último post e aparentemente deu certinho.

Obrigado!!! :D

Marcello.


Responder

Gostei + 0

25/07/2006

Marco Salles

Bom...


Responder

Gostei + 0

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

Aceitar