Função para reverter um cálculo com porcentagem.
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; |
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; |
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; |
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;
Dúvidas ou sugestões deixe nos comentários do post.
-
Giovani Da Cruz
-
26.101 views
- 0 comentários
- 26 de março de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo