abs()
Conheça a função abs() do PHP, usada para obter o valor absoluto de um número e medir distâncias entre valores.
A função abs() retorna o valor absoluto de um número — sua magnitude sem sinal. Em outras palavras, ela indica a distância do número até zero, portanto abs(-5) e abs(5) produzem 5. Esta página aborda a sintaxe, os tipos de retorno, casos extremos importantes e os usos práticos mais comuns.
Sintaxe
abs(int|float $num): int|float$num— o número do qual você quer o valor absoluto (inteiro ou float).- Valor de retorno — o valor absoluto de
$num. O tipo de retorno corresponde ao tipo da entrada: passe um inteiro, receba um inteiro; passe um float, receba um float.
Exemplo básico
Isso imprime 5. Começamos com um valor negativo, chamamos abs() para remover o sinal e exibimos o resultado. Uma entrada positiva seria retornada sem alterações.
Inteiros vs. floats
abs() preserva o tipo numérico, o que importa ao comparar resultados ou formatar a saída:
<?php
echo abs(-7); // 7 (int)
echo "\n";
echo abs(-7.5); // 7.5 (float)
echo "\n";
var_dump(abs(-7)); // int(7)
var_dump(abs(-7.5)); // float(7.5)
?>Strings numéricas também são aceitas — abs("-3.2") retorna o float 3.2 — mas passar uma string não numérica dispara um TypeError no PHP 8+, então valide a entrada com is_numeric() quando ela vier de fora do seu código.
Um uso prático: distância entre dois valores
O motivo mais comum para usar abs() é medir a diferença entre dois números sem se preocupar com qual é maior:
<?php
$expected = 100;
$actual = 87;
$difference = abs($expected - $actual);
echo "You are off by {$difference}.";
?>Isso imprime You are off by 13. independentemente de $actual ser 87 ou 113 — a ordem da subtração não importa mais. O mesmo padrão é útil para tolerâncias (if (abs($a - $b) < 0.001)), variações de preço e distâncias entre coordenadas.
Casos extremos e armadilhas
- Zero continua zero.
abs(0)é0eabs(-0.0)é0.0. - Já é positivo?
abs()retorna o valor sem alterações, portanto é seguro chamá-lo preventivamente sem verificar o sinal primeiro. - Overflow de
PHP_INT_MIN.abs(PHP_INT_MIN)não cabe em um inteiro (seu equivalente positivo é um a mais quePHP_INT_MAX), então o PHP o retorna como float para evitar overflow. - Não arredonda.
abs()apenas remove o sinal. Para eliminar a parte decimal, usefloor(),ceil()ouround().
Funções relacionadas
round()— arredonda um float para uma precisão determinada.floor()/ceil()— arredonda para baixo / para cima até o inteiro mais próximo.pow()esqrt()— exponenciação e raízes quadradas.max()/min()— seleciona o maior ou menor entre vários valores.is_numeric()— verifica se um valor é um número antes de realizar operações matemáticas.
Para uma visão mais ampla dos auxiliares numéricos do PHP, consulte a referência de matemática PHP.
Conclusão
abs() é uma ferramenta pequena mas muito utilizada: retorna a magnitude de um número independentemente do sinal, mantém o tipo da entrada e é ideal quando você precisa da distância entre dois valores. Lembre-se de que ela não arredonda, e fique atento ao caso extremo de PHP_INT_MIN, em que o resultado é retornado como float.