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
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)è0eabs(-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ù diPHP_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 utilizzinofloor(),ceil()oround().
Funzioni correlate
round()— arrotonda un float a una precisione specificata.floor()/ceil()— arrotonda verso il basso / verso l'alto all'intero più vicino.pow()esqrt()— 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.