Fórum problema com média ponderada #334887
18/12/2006
0
alguém utiliza média ponderada em algum sistema? tem hora q o cálculo apresenta um valores ´complicados´ mas o cálculo matemático esta correto, por exemplo na imagem...
[url=http://www.mh2img.net][img:79ba0b1b42]http://img00.mh2img.net/14MediaPond.JPG[/img:79ba0b1b42][/url]
alguém tem alguma sugestão, idéia de como resolver isso da melhor maneira possível?
Gilberto Fernandes
Curtir tópico
+ 0Posts
18/12/2006
Marco Salles
[b:fe4aba99f2]o calculo esta correto.. com exceção de problemas de arredondamento, mas isto ja não faz parte da matamética e sim da informatica[/b:fe4aba99f2]
resolver o que ???
Gostei + 0
19/12/2006
Gilberto Fernandes
e apesar de na imagem esta aparecendo apenas duas casas de centavos os calculos foram realizados com seis casa
Gostei + 0
19/12/2006
Marco Salles
1)
[b:409461d4f9]No caso de entrada de mercadoria[/b:409461d4f9]
Para calcular o preço medio < ai que entra a media ponderada no calculo > voce faz assim
e
No seu exemplo , voce tem
Quant1=2000 ValorUnitario1 = 0,51 ... ai entrou
Quant2 = 1000 e ValorUnitario2 = 0,08
Logo faça:
ValorUnitario=2000*0,52+1000*0,08/(2000+1000)
ValorUnitario=0,36666 e finalmente
Valor=0,3666*3000 = 1099,99
[b:409461d4f9]Observe que o seu valorUnitario esta nesse momento[color=red:409461d4f9] 0,37 [/color:409461d4f9], quando o correto seria [color=red:409461d4f9]0,3666[/color:409461d4f9] e o seu valor quando entrou 1000 a um preco de 0,08 esta [color=red:409461d4f9]1096,40[/color:409461d4f9], quando o correto seria [color=red:409461d4f9]1099,99[/color:409461d4f9][/b:409461d4f9]
[b:409461d4f9]2)No caso de saida[/b:409461d4f9]
Mas independentemente desse arredondamentos , no caso de [b:409461d4f9]saida[/b:409461d4f9] voce deve calcular o valor , multiplicando a quantidade pelo Valor_Unitario...
No final , voce tera um saldo de zero e um valor_Unitario=0,3666 , porem o seu valor será zero
Gostei + 0
19/12/2006
Gilberto Fernandes
então no ponto q vc citou eu tenho 2000 a 0,51 = 1020,00, entrou mais 1000 a 0,07640 = 76,40, dando um total qtde = 3000 e valor = 1096,40
o valor calculado para a proxima saída é [color=red:60e07771f8]1096,40/3000 = 0,3655[/color:60e07771f8]
esse é o valor q esta calculando nas saídas posteriores
150 * 0,3655 = 54,825
2000 * 0,3655 = 731,00
850 * 0,3655 = 310,675
a soma das saídas da 1096,50 - 1096,40 = -0,10
o problema esta q eu achando o valor de 0,3655 depois da entrada, o arredondamento dessa dizima q da o problema pq [color=red:60e07771f8]1096,40 / 3000 = 0,3655[/color:60e07771f8], porém [color=red:60e07771f8]0,3655 * 3000 = 1096,50[/color:60e07771f8]
Gostei + 0
19/12/2006
Marco Salles
[b:68f3611777]eita..........[/b:68f3611777]
isto não é media ponderada amigo
Gostei + 0
20/12/2006
Gilberto Fernandes
o q não é média ponderada???
Gostei + 0
20/12/2006
Massuda
var Total: Currency; // internamente arredonda 4 casas Media: Currency; Resto: Currency; begin Total := 2000 * 0.51 + 1000 * 0.07640; Media := Total / 3000; Resto := Total - 3000 * Media; // Resto = -0.1 !!! ...
O problema não é o Currency, mas sim o fato dos cálculos envolverem valores ´muito grandes´ e ´muito pequenos´ (milhares de unidades e centavos de dinheiro). Pelo que me lembro, tem técnicas matemáticas sofisticadas para contornar esse problema (que não valem a pena usar num controle de estoque) ou simplesmente use mais precisão no cálculo (por exemplo, mudar de Currency para Double).
Gostei + 0
20/12/2006
Gilberto Fernandes
Valeu Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)