Position actuelle: Accueil> Derniers articles> Pourquoi l'utilisation de ceil () au lieu de Round () me fait-il faire une erreur de logique de programme?

Pourquoi l'utilisation de ceil () au lieu de Round () me fait-il faire une erreur de logique de programme?

M66 2025-06-23

Dans le développement de PHP, les nombres de traitement et les nombres de points flottants sont une tâche courante, et les deux fonctions ceIL () et Round () sont souvent utilisées pour les nombres ronds. À première vue, ils semblent tous «arrondir vers le haut», mais leur comportement et leur but sont essentiellement différents. Abrupte ceil () au lieu de Round () , ou à son tour, il est très susceptible de provoquer des erreurs de logique du programme. Cet article plongera sur la raison pour laquelle l'utilisation de ceil () au lieu de Round () peut apporter des problèmes inattendus.


La différence essentielle entre ceil () et rond ()

  • plaf (float $ value): float

    Cou sur le numéro de point flottant passant vers le haut, c'est-à-dire, renvoyez le plus petit entier pas moins que cette valeur.

  • Round (Float $ valeur, int $ précis = 0, int $ mode = php_round_half_up): float

    Le numéro de point flottant passé est arrondie en fonction de la règle d'arrondi, avec la précision par défaut de 0, c'est-à-dire arrondi à un entier.


Comparaison des exemples typiques

 <?php
// Tester la valeur
$number1 = 3.2;
$number2 = 3.7;
$number3 = 3.5;

// utiliser ceil()
echo ceil($number1); // 4
echo ceil($number2); // 4
echo ceil($number3); // 4

// utiliser round()
echo round($number1); // 3
echo round($number2); // 4
echo round($number3); // 4
?>

À partir du code ci-dessus:

  • Ceil () est rassemblé inconditionnellement, même s'il est de 3,1, il est directement pris à 4;

  • Round () est basé sur le principe de l'arrondi, 3,2 prend 3, 3,7 prennent 4 et 3,5 prennent 4.


Pourquoi l'utilisation de ceil () provoque-t-elle des erreurs de logique de programme?

Supposons que la logique de votre programme détermine le comportement en fonction d'un certain seuil de score, tel que:

  • Si le score est inférieur à 5, effectuez l'opération A;

  • La fraction est égale ou supérieure à 5 pour effectuer l'opération B.

Si vous utilisez CEIL () pour vous-même, tous les nombres à virgule flottante entre 4 et 5 seront augmentés à 5, ce qui entraînera les scores qui auraient dû effectuer l'opération A sont mal jugés comme opération de réalisation B.

Exemple de code:

 <?php
$score = 4.3;

if (ceil($score) >= 5) {
    echo "mettre en œuvreBfonctionner";
} else {
    echo "mettre en œuvreAfonctionner";
}
?>

La sortie est:

 mettre en œuvreBfonctionner

Bien que 4.3 soit en fait inférieur à 5, car le CEIL (4.3) est égal à 5, la logique est déclenchée par une erreur.

Et s'il est remplacé par Round () :

 <?php
$score = 4.3;

if (round($score) >= 5) {
    echo "mettre en œuvreBfonctionner";
} else {
    echo "mettre en œuvreAfonctionner";
}
?>

La sortie est:

 mettre en œuvreAfonctionner

C'est ce que c'est de répondre aux attentes.


Quand dois-je utiliser ceil () ?

ceil () convient aux scénarios où le résultat doit être assuré d'être pas moins que le numéro d'origine, tel que:

  • Lors du calcul du nombre de pages de pagination, assurez-vous que le nombre de pages est suffisamment grand pour couvrir toutes les données;

  • Lors du calcul de la capacité ou des ressources, assurez-vous qu'il n'y a pas de pénurie.

Par exemple:

 <?php
$totalItems = 23;
$itemsPerPage = 5;

$totalPages = ceil($totalItems / $itemsPerPage);
echo $totalPages; // 5
?>

Il est très raisonnable d'utiliser ceil () ici, et une page ne peut pas être manquante.


Résumer

  • Ceil () est inconditionnellement arrondi vers le haut, et le résultat est toujours supérieur ou égal au nombre d'origine.

  • Round () est arrondi et le résultat est un entier plus proche du numéro d'origine.

  • Si la logique du programme dépend de "l'approche" ou de "l'arrondi standard", l'utilisation de ceil () entraînera des erreurs de jugement.

  • Utilisez ceil () uniquement si vous avez vraiment besoin d'un résultat qui est "garanti pas moins".


J'espère que grâce à l'explication ci-dessus, vous pouvez mieux distinguer les utilisations de ces deux fonctions et éviter les erreurs logiques du programme en raison d'une sélection incorrecte.


 <?php
// utiliser round() Exemple,Évitez les erreurs logiques
$price = 19.5;
$finalPrice = round($price);

echo "Le prix final est: " . $finalPrice; // 20
?>

 <?php
// utiliser ceil() Exemple,Calculer le nombre de pages
$totalRecords = 52;
$perPage = 10;

$totalPages = ceil($totalRecords / $perPage);
echo "Nombre de pages totales:" . $totalPages; // 6
?>