W3docs

ceil()

Aprenda a usar a função ceil() no PHP para arredondar números para cima até o inteiro mais próximo, com exemplos práticos.

A função ceil() do PHP arredonda um número para cima até o próximo número inteiro — em direção ao infinito positivo. O nome vem de "teto" (ceiling): ela sempre retorna o menor valor inteiro que seja maior ou igual ao valor de entrada. Esta página explica a sintaxe, o tipo de retorno surpreendente, o comportamento com números negativos e os casos práticos em que arredondar para cima é exatamente o que você precisa (paginação, preços, tamanhos de lote).

Sintaxe

ceil(int|float $num): float
  • $num — o valor a arredondar. PHP aceita um int ou float; strings numéricas são convertidas automaticamente.
  • Valor de retorno — o próximo número inteiro mais alto, retornado como float, não como int (mais sobre isso abaixo).

Exemplo básico

php— editable, runs on the server

4.2 está entre 4 e 5, e ceil() sempre move para cima, portanto o resultado é 5. Até mesmo 4.0001 arredonda para 5. Um valor que já é um número inteiro é retornado sem alteração.

ceil() retorna um float

Isso pega muitos iniciantes de surpresa: ceil() retorna um float, mesmo que o valor pareça um inteiro.

<?php
$result = ceil(4.2);

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

echo exibe 5 porque o PHP omite o .0 ao imprimir, mas o tipo subjacente ainda é float. Se você precisar de um int verdadeiro — por exemplo, para usar o valor como chave de array ou para satisfazer uma declaração de tipo estrito — converta-o explicitamente com intval() ou (int):

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

Como ceil() lida com números negativos

Arredondar "para cima" significa mover em direção ao infinito positivo, portanto, para números negativos, o resultado fica mais próximo de zero, não mais distante.

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

-4.2 arredonda para -4 porque -4 é maior do que -4.2. Esta é a diferença fundamental em relação a um simples "sempre somar 1" — ceil() segue a reta numérica, não a magnitude.

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

Essas três funções reduzem um número a um valor inteiro, mas escolhem direções diferentes:

FunçãoDireçãoceil(4.2)floor(4.2)round(4.2)
ceil()Sempre para cima5
floor()Sempre para baixo4
round()Mais próximo4

Use ceil() quando "qualquer resto significa mais um" — floor() sempre descarta a fração, e round() escolhe o número inteiro mais próximo.

Casos de uso práticos

Paginação — quantas páginas são necessárias? Se você tem 95 itens e exibe 10 por página, a última página parcial ainda conta:

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

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

95 / 10 é 9.5; floor() daria 9 e perderia os últimos 5 itens, portanto ceil() é a escolha correta aqui.

Arredondar um preço para o próximo centavo ou cobrar em unidades inteiras funciona da mesma forma — qualquer resto aumenta para a próxima unidade.

Armadilhas comuns

  • Não é um inteiro. Compare com números, não com tipos: ceil(4.2) === 5 é false (float vs int), enquanto ceil(4.2) == 5 é true. Use (int) quando precisar de um inteiro.
  • Precisão de ponto flutuante. Como $num é um float, pequenos erros de representação podem surpreendê-lo ocasionalmente (por exemplo, um valor que "deveria" ser exatamente 5.0 sendo armazenado como 5.00000001). Para valores monetários, prefira centavos inteiros a valores em reais com ponto flutuante.
  • Direção com negativos. Lembre-se: ceil(-4.5) é -4, não -5.

Conclusão

ceil() arredonda um número para cima até o valor inteiro mais próximo e o retorna como float. Use-a sempre que uma fração restante deva "contar como mais um" — paginação, dimensionamento de lotes ou precificação. Combine-a com suas irmãs floor() e round(), e converta o resultado com intval() quando precisar genuinamente de um int.

Prática

Prática
Qual é a função de ceil() no PHP?
Qual é a função de ceil() no PHP?
Was this page helpful?