Calculo de porcentagem reverso - AJUDA POR FAVOR.

1,078 views
Skip to first unread message

Danilo Oliveira

unread,
Jan 10, 2015, 10:09:17 AM1/10/15
to php-b...@googlegroups.com
Fala ai galeria do grupo PHP Brasil,
estou precisando de uma ajuda num fato crucial para mim,
tentei de vários modos e ainda não consegui um resultado.
O problema é o seguinte, estou desenvolvendo um aplicativo em
php para uma empresa para emissão de notas fiscais eletrônicas,
consegui vincular consultas do meu sistema no banco de dados
da empresa que estou prestando o serviço, estudei cada tabela do
banco de dados da empresa para em fim eu poder localizar onde
ficam os pedidos da empresa para trazer para nota fiscal
de forma dinâmica. O problema é o desenvolvedor do aplicativo
da empresa fez o seguinte:
Quando o vendedor da desconto em uma venda ele ja salva o valor
total com o desconto dado e só exibe em uma outra coluna a porcentagem
do desconto. Ja tentei reverter isso para conseguir o valor real da venda sem
o desconto e não consigo.
Exemplo:
A venda teve um valor de R$ 40,88
Com o desconto ele salvou no banco o valor de R$ 40,00
lógico como fui eu que fiz a venda teste eu sei q o valor era R$ 40,88.
Mas para que eu descubra o valor real da venda eu tenho que rever o desconto
numa outra coluna ficou o valor em porcentagem do desconto esta assim:

Pedido         Valor           Desc1
8                 40.00           2.1526

Ja tentei rever isso e ele retorna um valor aproximado mas nunca o valor
correto da venda.

Fiz da seguinte maneira:
$valor = 40.00; // valor original
$percentual = 2.1526 / 100.0; // 15%
$valor_final = $valor + ($percentual * $valor);

Resultado é 40.86104
Resultado utilizando round de 2 casas é 40.86
Mas ainda esta incorreto pois o valor real da venda é 40.88

me ajudem ai galera por favor.

Ronald Bolsoni Falcão

unread,
Jan 10, 2015, 12:34:02 PM1/10/15
to PHP Brasil
Cara, pergunta besta: o desconto não é dado eliminando os centavos?

Mas para você entender regra de três:
100% -> 40,88
X% -> 40

x%= 2,152641878669276%
x= 0,0215264187866928 (já fiz a divisão por 100)

A sacadinha dessa conta é que você não pode fazer esse valor de X * 40 = 0,86, mas tem que fazer esse X * 40,88 = 0,88, porque 40,88 que é o seu 100%.

Espero ter ajudado.









twitter   @ronaldcurtis

"Se você eliminar o impossível o que sobrar, mesmo que improvável, dever ser verdade.
Sir Arthur Conan Doyle

--
Você recebeu essa mensagem porque está inscrito no grupo "php-brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para php-brasil+...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para php-b...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/php-brasil.
Para mais opções, acesse https://groups.google.com/d/optout.

Eduardo Kraus

unread,
Jan 10, 2015, 10:40:05 PM1/10/15
to php-brasil
Em 10 de janeiro de 2015 13:09, Danilo Oliveira <danilool...@gmail.com> escreveu:

--

Wss

unread,
Jan 11, 2015, 8:18:23 AM1/11/15
to php-b...@googlegroups.com
Olá ,

Se fosse você colocaria  o campo valor bruto no sistema.
Regra de 3 em alguns casos não da certo por arredondamento 

Abs,

Walber Sales



Enviado do meu iPad
--

Ronald Bolsoni Falcão

unread,
Jan 11, 2015, 8:32:08 AM1/11/15
to PHP Brasil
Senhores,

Não acham o desconto de 2.1526% estranho? Se não for imposto (ou taxa) é muito raro alguém dar um desconto quebrado assim.

Nos cálculos que fiz (e-mail anterior) o desconto tirando os R$ 0,88 (ou seja, 100% = 40,00 e não 40,88) dá exatamente o referido desconto (2.1526%). Ou seja, 0,88 centavos é um desconto de 2.1526% de R$ 40,00. 

Esses 0,86 centavos vem do cálculo usando 40,00 como 100% e o desconto de 2.1526%, mas sabemos que esse valor não é 100%, por isso o erro.

Será que não existe uma função que retira os centavos do total e calcula o desconto (%) que foi dado baseado nesse desconto (centavos)?

Acredito que o problema não seja de arredondamento, mas da regra de negócio por trás desse desconto.

Abraços.





twitter   @ronaldcurtis

"Se você eliminar o impossível o que sobrar, mesmo que improvável, dever ser verdade.
Sir Arthur Conan Doyle

Luigi Dariva Teixeira

unread,
Jan 11, 2015, 9:00:15 AM1/11/15
to php-b...@googlegroups.com
Para chegar de novo no valor total tem que considerar que 40 é (100% - 2,1526%) ou seja ~= 97,8474%
Aí você monta a regra, se 97,8474% do meu valor é 40, quanto é 100%?

Nas minhas contas deu: ~40,87998250336749

Arredondando, você chega no valor total.

Apesar disso, acho que a melhor prática seria ter no teu banco o valor original e o valor de venda. Já que como você pode ver, essas operações com pontos flutuantes são aproximações...
Reply all
Reply to author
Forward
0 new messages