Calculando porcentagem com PHP

Publicado em:
PHP 

Uma coisa muito comum para qualquer programador é uma hora ter que fazer cálculos matemáticos. Dentre eles, o mais comum é o cálculo de porcentagens.

Nesse tutorial, estarei falando sobre como calcular porcentagem através do PHP.

Descobrindo a porcentagem entre dois números

Você precisa dividir o valor que deseja descobrir a porcentagem pelo valor base e multiplicar por 100. Por exemplo, se você deseja saber a porcentagem de 500 sobre 4000, basta dividir 500 por 4000 e multiplicar o resultado por 100. O resultado esperado é 12.5%.

$valor_base = 4000;
$valor = 500;
$resultado = ($valor / $valor_base) * 100;

var_dump($resultado); // int(12.5)

Podemos criar então uma função que faça esse trabalho:

function descobrir_porcentagem(float $valor_base, float $valor): float
{
     return $valor / $valor_base * 100;
}

var_dump(descobrir_porcentagem (4000, 500)); // float(12.5)

Calculando o valor baseado na porcentagem

Para obtermos um valor com base na porcentagem, basta multiplicar o valor pela porcentagem desejada e dividir por 100. Suponhamos que você deseja saber quanto é 15% de 3000.

Basta fazer assim:

$valor = 3000;
$porcentagem = 15;
$resultado = $valor * ($porcentagem / 100);
var_dump($resultado); // float(450.0)

Calculando a porcentagem de desconto

Se quisermos subtrair o desconto de uma determinada porcentagem, basta subtrair o valor base pela porcentagem encontrada no exemplo anterior.

Por exemplo, um desconto de 15% sobre 1000 será de 150, o que fará com que o valor final seja 850. Sendo assim, precisamos encontrar a porcentagem do valor base e subtrair o valor base pelo resultado da porcentagem encontrada.

Podemos fazer esse cálculo assim:

$valor = 1000;
$porcentagem = 15;
$resultado = $valor - ($valor * $porcentagem / 100);
var_dump($resultado); // float(850)

Opcionalmente, você pode até criar uma função para facilitar cálculos futuros.

Código:

function calcular_desconto(float $valor, float $p_desconto): float 
{
    return $valor - ($valor * $p_desconto / 100); 
}

Observação importante

O BRL (moeda Real Brasileiro) possui apenas duas casas decimais, que representam os Centavos. Talvez seja interessante arredondar o resultado para não ocorrer imprevistos.

Para fazer isso, basta utilizar a função round

function calcular_desconto(float $valor, float $p_desconto): float 
{
    $resultado = $valor - ($valor * $p_desconto / 100);
    return round($resultado, 2);
}

var_dump(calcular_desconto(1000, 5.4321)); // float(945.68)

Dica

No cálculo onde já temos os valores de porcentagem, usamos a divisão por 100. Opcionalmente, você pode multiplicar por 0.01, que gera o mesmo efeito.

Por exemplo, 4% de 200 é 8. Podemos encontrar esse valor assim:

200 * 4 * 0.01