W3docs

ceil()

La funzione ceil() in PHP arrotonda un numero verso l'alto all'intero più vicino. Scopri sintassi, tipo di ritorno e casi d'uso pratici.

La funzione PHP ceil() arrotonda un numero verso l'alto al prossimo intero — verso l'infinito positivo. Il nome deriva da "soffitto" (ceiling in inglese): restituisce sempre il più piccolo valore intero maggiore o uguale all'input. Questa pagina spiega la sintassi, il tipo di ritorno (che spesso sorprende), il comportamento con i numeri negativi e i casi pratici in cui arrotondare verso l'alto è esattamente ciò di cui hai bisogno (paginazione, prezzi, dimensioni dei batch).

Sintassi

ceil(int|float $num): float
  • $num — il valore da arrotondare. PHP accetta un int o un float; le stringhe numeriche vengono convertite automaticamente.
  • Valore di ritorno — il prossimo intero superiore, restituito come float, non come int (approfondiremo questo aspetto più avanti).

Esempio di base

php— editable, runs on the server

4.2 è compreso tra 4 e 5, e ceil() si sposta sempre verso l'alto, quindi il risultato è 5. Anche 4.0001 viene arrotondato a 5. Un valore già intero viene restituito invariato.

ceil() restituisce un float

Questo inganna molti principianti: ceil() restituisce un float, anche se il valore sembra un intero.

<?php
$result = ceil(4.2);

echo $result;          // 5   (echo hides the .0)
var_dump($result);     // float(5)
echo gettype($result); // double
?>

echo mostra 5 perché PHP omette il .0 finale nella stampa, ma il tipo sottostante è comunque float. Se hai bisogno di un vero int — ad esempio per usare il valore come chiave di array o per soddisfare un'indicazione di tipo strict — esegui un cast esplicito con intval() o (int):

<?php
$pages = (int) ceil(95 / 10);
var_dump($pages); // int(10)
?>

Come ceil() gestisce i numeri negativi

Arrotondare "verso l'alto" significa spostarsi verso l'infinito positivo, quindi per i numeri negativi il risultato è più vicino allo zero, non più lontano.

<?php
echo ceil(-4.2); // -4   (toward zero, not -5)
echo "\n";
echo ceil(-4.8); // -4
?>

-4.2 viene arrotondato a -4 perché -4 è maggiore di -4.2. Questa è la differenza fondamentale rispetto a un "aggiungi sempre 1" ingenuo — ceil() segue la retta dei numeri, non la grandezza.

ceil() vs. floor() vs. round()

Queste tre funzioni riducono tutte un numero a un valore intero, ma scelgono direzioni diverse:

FunzioneDirezioneceil(4.2)floor(4.2)round(4.2)
ceil()Sempre verso l'alto5
floor()Sempre verso il basso4
round()Al più vicino4

Usa ceil() quando "qualsiasi resto significa uno in più" — floor() scarta sempre la parte frazionaria, e round() sceglie il numero intero più vicino.

Casi d'uso pratici

Paginazione — quante pagine mi servono? Se hai 95 elementi e ne mostri 10 per pagina, l'ultima pagina parziale conta comunque:

<?php
$total_items = 95;
$per_page    = 10;

$total_pages = ceil($total_items / $per_page);
echo $total_pages; // 10
?>

95 / 10 è 9.5; floor() darebbe 9 e perderebbe gli ultimi 5 elementi, quindi ceil() è la scelta corretta qui.

Arrotondare un prezzo al centesimo superiore o addebitare in unità intere funziona allo stesso modo — qualsiasi resto ti porta all'unità successiva.

Insidie comuni

  • Non è un intero. Confronta con i numeri, non con i tipi: ceil(4.2) === 5 è false (float vs int), mentre ceil(4.2) == 5 è true. Esegui il cast con (int) quando hai bisogno di un intero.
  • Precisione in virgola mobile. Poiché $num è un float, piccoli errori di rappresentazione possono occasionalmente sorprenderti (ad esempio un valore che "dovrebbe" essere esattamente 5.0 ma viene memorizzato come 5.00000001). Per le valute, preferisci i centesimi interi ai dollari in virgola mobile.
  • Direzione con i negativi. Ricorda che ceil(-4.5) è -4, non -5.

Conclusione

ceil() arrotonda un numero verso l'alto al valore intero più vicino e lo restituisce come float. Usala ogni volta che una frazione residua deve "contare come uno in più" — paginazione, dimensionamento dei batch o prezzi. Abbinala alle sue funzioni sorelle floor() e round(), e converti il risultato con intval() quando hai effettivamente bisogno di un int.

Esercitati

Pratica
Qual è la funzione di ceil() in PHP?
Qual è la funzione di ceil() in PHP?
Was this page helpful?