W3docs

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

php— editable, runs on the server

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) é 0 e abs(-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 que PHP_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, use floor(), ceil() ou round().

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() e sqrt() — 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.

Prática

Prática
Qual é o papel da função abs() no PHP?
Qual é o papel da função abs() no PHP?
Was this page helpful?