W3docs

floor()

Aprenda a usar a função floor() em PHP para arredondar números para baixo até o inteiro mais próximo, com exemplos e comparações.

A função floor() em PHP arredonda um número para baixo até o inteiro mais próximo — ou seja, retorna o maior inteiro que seja menor ou igual ao valor fornecido. "Para baixo" aqui significa sempre em direção ao infinito negativo, o que é o detalhe que a maioria das pessoas erra. Esta página aborda a sintaxe, o comportamento de floor() com números positivos e negativos, o tipo que ela retorna e quando usá-la em vez de ceil(), round() ou intdiv().

Sintaxe

floor(int|float $num): float
  • $num — o valor a ser arredondado para baixo. Pode ser um int ou um float.
  • Valor de retorno — o resultado é sempre retornado como um float, mesmo quando representa um número inteiro. Portanto, floor(7) retorna 7.0, não 7. Se você precisar de um inteiro de verdade, converta o resultado: (int) floor($num).

Um exemplo básico

php— editable, runs on the server

Atribuímos um float a $number, passamos para floor() e a função retorna 3 — o maior inteiro que não é maior que 3.14. Tudo após o ponto decimal é simplesmente descartado para números positivos.

Como floor() lida com números negativos

Esta é a parte que confunde as pessoas. floor() arredonda em direção ao infinito negativo, portanto um valor negativo arredonda para longe de zero, não em direção a ele.

<?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, os inteiros abaixo dele são -5, -6, ...; o maior deles é -5. Se você quisesse -4 (arredondando em direção a zero), usaria ceil() ou uma conversão como (int) -4.7.

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

Estas três funções retornam números inteiros, mas diferem na direção:

FunçãoDireçãofloor(2.5) / ceil(2.5) / round(2.5)
floor()Sempre para baixo (em direção a −∞)2.0
ceil()Sempre para cima (em direção a +∞)3.0
round()Para o mais próximo, meios arredondados para cima por padrão3.0
<?php
echo floor(2.5); // 2
echo "\n";
echo ceil(2.5);  // 3
echo "\n";
echo round(2.5); // 3
?>

Quando usar floor()?

floor() é útil sempre que você precisar de uma contagem inteira que nunca deve ultrapassar o valor real:

  • Paginação — número de páginas completas: floor($totalItems / $perPage).
  • Tempo/unidades — horas inteiras a partir de minutos: floor($minutes / 60).
  • Dinheiro/quantidades — quantos itens inteiros cabem em um orçamento: floor($budget / $price).
<?php
$totalItems = 47;
$perPage    = 10;

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

Nota: Para divisão inteira, você também pode usar intdiv(), que retorna um verdadeiro int e é mais claro quando ambos os operandos são inteiros. Use floor() quando floats estiverem envolvidos.

Conclusão

floor() sempre arredonda para baixo em direção ao infinito negativo e retorna um float. Lembre-se de que números negativos arredondam para longe de zero, e converta para (int) se precisar de um tipo inteiro. Para a direção oposta, use ceil(); para arredondamento ao valor mais próximo, use round(); e para formatar números com separadores de milhares, consulte number_format().

Prática

Prática
O que a função floor() faz em PHP?
O que a função floor() faz em PHP?
Was this page helpful?