W3docs

floor()

Aprende a usar la función floor() en PHP para redondear números hacia abajo al entero más cercano.

La función floor() en PHP redondea un número hacia abajo al entero más cercano — es decir, devuelve el entero más grande que sea menor o igual al valor que le proporcionas. "Hacia abajo" aquí siempre significa hacia el infinito negativo, que es el detalle que la mayoría de las personas malinterpreta. Esta página cubre la sintaxis, cómo se comporta floor() con números positivos y negativos, el tipo que devuelve y cuándo usarla en lugar de ceil(), round() o intdiv().

Sintaxis

floor(int|float $num): float
  • $num — el valor a redondear hacia abajo. Puede ser un int o un float.
  • Valor de retorno — el resultado se devuelve siempre como un float, incluso cuando representa un número entero. Por lo tanto, floor(7) devuelve 7.0, no 7. Si necesitas un entero real, convierte el resultado: (int) floor($num).

Un ejemplo básico

php— editable, runs on the server

Asignamos un float a $number, lo pasamos a floor() y la función devuelve 3 — el entero más grande que no es mayor que 3.14. Todo lo que hay después del punto decimal simplemente se descarta para los números positivos.

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

Esta es la parte que confunde a la gente. floor() redondea hacia el infinito negativo, por lo que un valor negativo se redondea alejándose de cero, no acercándose a él.

<?php
echo floor(4.7);   // 4
echo "\n";
echo floor(-4.7);  // -5  (down means more negative)
echo "\n";
echo floor(-4.1);  // -5
echo "\n";
echo floor(8);     // 8   (already an integer)
?>

Para -4.7, los enteros por debajo de él son -5, -6, ...; el mayor de ellos es -5. Si quisieras -4 (redondeo hacia cero), usarías ceil() o una conversión como (int) -4.7 en su lugar.

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

Estas tres funciones devuelven números enteros pero difieren en la dirección:

FunciónDirecciónfloor(2.5) / ceil(2.5) / round(2.5)
floor()Siempre hacia abajo (hacia −∞)2.0
ceil()Siempre hacia arriba (hacia +∞)3.0
round()Al más cercano, mitades hacia arriba por defecto3.0
<?php
echo floor(2.5); // 2
echo "\n";
echo ceil(2.5);  // 3
echo "\n";
echo round(2.5); // 3
?>

¿Cuándo usaría floor()?

floor() aparece siempre que necesitas un conteo entero que nunca debe excederse:

  • Paginación — número de páginas completas: floor($totalItems / $perPage).
  • Tiempo/unidades — horas completas a partir de minutos: floor($minutes / 60).
  • Dinero/cantidades — cuántos artículos enteros caben en un presupuesto: floor($budget / $price).
<?php
$totalItems = 47;
$perPage    = 10;

$fullPages = floor($totalItems / $perPage);
echo "Full pages: " . $fullPages; // Full pages: 4
?>

Nota: Para la división entera también puedes usar intdiv(), que devuelve un int verdadero y es más claro cuando ambos operandos son enteros. Usa floor() cuando haya floats involucrados.

Conclusión

floor() siempre redondea hacia abajo hacia el infinito negativo y devuelve un float. Ten en cuenta que los números negativos se redondean alejándose de cero, y convierte a (int) si necesitas un tipo entero. Para la dirección opuesta usa ceil(), para el redondeo al valor más cercano usa round(), y para formatear números con separadores de miles consulta number_format().

Práctica

Práctica
¿Qué hace la función floor() en PHP?
¿Qué hace la función floor() en PHP?
Was this page helpful?