W3docs

ceil()

Aprende a usar la función ceil() en PHP para redondear números hacia arriba al entero más cercano, con ejemplos y casos de uso prácticos.

La función ceil() de PHP redondea un número hacia arriba hasta el siguiente número entero — en dirección al infinito positivo. El nombre proviene de "ceiling" (techo): siempre devuelve el menor valor entero que sea mayor o igual a la entrada. Esta página explica la sintaxis, el sorprendente tipo de retorno, el comportamiento con números negativos y los casos prácticos en los que redondear hacia arriba es exactamente lo que necesitas (paginación, precios, tamaños de lote).

Sintaxis

ceil(int|float $num): float
  • $num — el valor a redondear. PHP acepta un int o float; las cadenas numéricas se convierten automáticamente.
  • Valor de retorno — el siguiente número entero hacia arriba, devuelto como float, no como int (más sobre eso a continuación).

Ejemplo básico

php— editable, runs on the server

4.2 está entre 4 y 5, y ceil() siempre se mueve hacia arriba, por lo que el resultado es 5. Incluso 4.0001 se redondea a 5. Un valor que ya es un número entero se devuelve sin cambios.

ceil() devuelve un float

Esto confunde a muchos principiantes: ceil() devuelve un float, aunque el valor parezca un entero.

<?php
$result = ceil(4.2);

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

echo muestra 5 porque PHP omite el .0 al imprimir, pero el tipo subyacente sigue siendo float. Si necesitas un int verdadero — por ejemplo, para usar el valor como clave de array o para satisfacer una declaración de tipo estricta — conviértelo explícitamente con intval() o (int):

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

Cómo maneja ceil() los números negativos

Redondear "hacia arriba" significa moverse en dirección al infinito positivo, por lo que con números negativos el resultado está más cerca de cero, no más lejos de él.

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

-4.2 se redondea a -4 porque -4 es mayor que -4.2. Esta es la diferencia clave respecto a un ingenuo "siempre suma 1" — ceil() sigue la recta numérica, no la magnitud.

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

Estas tres funciones reducen un número a un valor entero, pero eligen direcciones diferentes:

FunciónDirecciónceil(4.2)floor(4.2)round(4.2)
ceil()Siempre hacia arriba5
floor()Siempre hacia abajo4
round()El más cercano4

Usa ceil() cuando "cualquier resto significa uno más" — floor() siempre descarta la fracción, y round() elige el número entero más cercano.

Casos de uso prácticos

Paginación — ¿cuántas páginas necesito? Si tienes 95 elementos y muestras 10 por página, la última página parcial también cuenta:

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

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

95 / 10 es 9.5; floor() daría 9 y perdería los últimos 5 elementos, por eso ceil() es la opción correcta aquí.

Redondear un precio hacia arriba al siguiente centavo o cobrar en unidades enteras funciona de la misma manera — cualquier resto te lleva a la siguiente unidad.

Errores comunes

  • No es un entero. Compara contra números, no tipos: ceil(4.2) === 5 es false (float vs int), mientras que ceil(4.2) == 5 es true. Convierte con (int) cuando necesites un entero.
  • Precisión de punto flotante. Como $num es un float, pequeños errores de representación pueden sorprenderte en ocasiones (por ejemplo, un valor que "debería" ser exactamente 5.0 almacenado como 5.00000001). Para divisas, prefiere centavos enteros sobre dólares de punto flotante.
  • Dirección con negativos. Recuerda que ceil(-4.5) es -4, no -5.

Conclusión

ceil() redondea un número hacia arriba al valor entero más cercano y lo devuelve como float. Úsala siempre que una fracción restante deba "contar como uno más" — paginación, tamaños de lote o precios. Combínala con sus funciones hermanas floor() y round(), y convierte el resultado con intval() cuando realmente necesites un int.

Práctica

Práctica
¿Cuál es la función de ceil() en PHP?
¿Cuál es la función de ceil() en PHP?
Was this page helpful?