Fórum Problemas em cálculo matemático #326012
24/07/2006
0
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
Curtir tópico
+ 0Posts
24/07/2006
Marco Salles
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
Gostei + 0
24/07/2006
Marcello
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 ?
Gostei + 0
25/07/2006
Marco Salles
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...
Gostei + 0
25/07/2006
Marcello
Não posso fazer assim pois o desconto é informado sobre o total da venda, que pode ter vários produtos.
Muito boa idéia, vou aplicar.
Vc armazenaria então a porcentagem com mais casas decimais para resolver este problema ?
Gostei + 0
25/07/2006
Marco Salles
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);
Gostei + 0
25/07/2006
Marcello
Fiz conforme seu último post e aparentemente deu certinho.
Obrigado!!! :D
Marcello.
Gostei + 0
25/07/2006
Marco Salles
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)