



Em alguns cálculos ou em opções para desfazer operações, as vezes nos
deparamos com cálculos com percentuais e ai pode seguir aquela dúvida:
Cálculo de porcentagem inversa?
Veja o seguinte exemplo:
R$ 100,00 + 30,00% = R$ 130,00.
O cálculo está correto.
Mas caso seja necessário desfazer a operação, não podemos simplesmente
inverter a conta, pois irá dar um resultado errado.
Veja o exemplo abaixo:
R$ 130,00 – 30,00% = R$ 90,10.
Este valor é menor que o valor original de R$ 100,00.
A boa notícia é que existe uma função muito fácil de
ser utilizada que resolve este problema.
Abaixo segue o código fonte da função:
1 2 3 4 | function GetValorBase(Valor, Percent : Double) : Currency; begin Result := Valor / (1 + (Percent / 100)); end; |
Exemplo com acréscimo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | procedure TForm1.Button1Click(Sender: TObject); const PERCENT = 30; var vAux : Double; begin { 100 + 30% = 130 } vAux := 100 + (100 * PERCENT / 100); ShowMessage(FormatFloat('#0.00', vAux)); { Fazendo a operação inversa para desfazer o acrescimo de 30 % } vAux := GetValorBase(vAux, PERCENT); ShowMessage(FormatFloat('#0.00', vAux)); end; |
Exemplo com desconto, repare que para reverter o percentual com desconto,
devemos passar o parâmetro do Percentual Negativo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | procedure TForm1.Button2Click(Sender: TObject); const PERCENT = 30; var vAux : Double; begin { 100 - 30% = 70 } vAux := 100 - (100 * PERCENT / 100); ShowMessage(FormatFloat('#0.00', vAux)); { Fazendo a operação inversa para desfazer o desconto de 30 % } vAux := GetValorBase(vAux, (PERCENT * -1) ); ShowMessage(FormatFloat('#0.00', vAux)); end; |
Para ver o artigo completo com exemplos em outras linguagem, acesse o link do blog Giovani Da Cruz:
https://giovanidacruz.com.br/como-fazer-o-calculo-de-porcentagem-inversa/
Dúvidas ou sugestões deixe nos comentários do post.