W3docs

abs()

Scopri la funzione abs() in PHP: restituisce il valore assoluto di un numero, con sintassi, esempi e casi limite.

La funzione abs() restituisce il valore assoluto di un numero, ossia la sua magnitudine senza segno. In altre parole, indica quanto il numero dista dallo zero: sia abs(-5) che abs(5) restituiscono 5. Questa pagina illustra la sintassi, i tipi di ritorno, i casi limite da conoscere e gli utilizzi più comuni nel mondo reale.

Sintassi

abs(int|float $num): int|float
  • $num — il numero di cui si vuole il valore assoluto (intero o float).
  • Valore di ritorno — il valore assoluto di $num. Il tipo restituito corrisponde al tipo in ingresso: si passa un intero, si ottiene un intero; si passa un float, si ottiene un float.

Esempio base

php— editable, runs on the server

Questo stampa 5. Si parte da un valore negativo, si chiama abs() per rimuovere il segno e si mostra il risultato. Un valore positivo in ingresso verrebbe restituito invariato.

Interi e float

abs() preserva il tipo numerico, il che è rilevante quando si confrontano i risultati o si formatta l'output:

<?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)
?>

Sono accettate anche le string numeriche — abs("-3.2") restituisce il float 3.2 — ma passare una string non numerica genera un TypeError in PHP 8+, quindi è bene validare l'input con is_numeric() quando proviene dall'esterno del proprio codice.

Un uso pratico: distanza tra due valori

Il motivo più comune per ricorrere ad abs() è misurare la differenza tra due numeri senza preoccuparsi di quale sia il maggiore:

<?php
$expected = 100;
$actual   = 87;

$difference = abs($expected - $actual);

echo "You are off by {$difference}.";
?>

Questo stampa You are off by 13. indipendentemente dal fatto che $actual sia 87 o 113 — l'ordine della sottrazione non ha più importanza. Lo stesso schema è utile per le tolleranze (if (abs($a - $b) < 0.001)), i delta di prezzo e le distanze tra coordinate.

Casi limite e avvertenze

  • Lo zero rimane zero. abs(0) è 0 e abs(-0.0) è 0.0.
  • Valore già positivo? abs() lo restituisce invariato, quindi è sicuro chiamarla in modo difensivo senza verificare prima il segno.
  • Overflow con PHP_INT_MIN. abs(PHP_INT_MIN) non può rientrare in un intero (il suo corrispettivo positivo è uno in più di PHP_INT_MAX), quindi PHP lo restituisce come float per evitare l'overflow.
  • Non arrotonda. abs() rimuove solo il segno. Per eliminare la parte decimale si utilizzino floor(), ceil() o round().

Funzioni correlate

  • round() — arrotonda un float a una precisione specificata.
  • floor() / ceil() — arrotonda verso il basso / verso l'alto all'intero più vicino.
  • pow() e sqrt() — elevamento a potenza e radice quadrata.
  • max() / min() — restituisce il maggiore o il minore tra più valori.
  • is_numeric() — verifica che un valore sia un numero prima di eseguire calcoli.

Per una panoramica più ampia degli strumenti numerici di PHP, consulta il riferimento PHP Math.

Conclusione

abs() è uno strumento piccolo ma molto utilizzato: restituisce la magnitudine di un numero indipendentemente dal segno, mantiene il tipo in ingresso ed è particolarmente utile quando si calcola la distanza tra due valori. Ricorda che non arrotonda e presta attenzione al caso limite di PHP_INT_MIN, dove il risultato viene restituito come float.

Esercizio

Pratica
Qual è il ruolo della funzione abs() in PHP?
Qual è il ruolo della funzione abs() in PHP?
Was this page helpful?