Função para reverter um cálculo com porcentagem. – Show Delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

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;

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;

Dúvidas ou sugestões deixe nos comentários do post.

Facebook Comments

Posts Relacionados

  • Giovani Da Cruz
  • 2.561 views
  • 0 comentários
  • 26 de março de 2015

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Ir ao topo

© 2016 Infus Soluções em Tecnologia - Todos os Direitos Reservados