Bei PHP -Entwicklung ist Verarbeitungsnummern und schwimmende Punktzahlen eine häufige Aufgabe, und die beiden Funktionen Ceil () und Round () werden häufig an runde Zahlen verwendet. Auf den ersten Blick scheinen sie alle "nach oben" zu sein, aber ihr Verhalten und Zweck sind im Wesentlichen unterschiedlich. Missbrauch ceil () anstelle von rund () oder im Gegenzug ist sehr wahrscheinlich Programmlogikfehler. In diesem Artikel wird in den Grund, warum die Verwendung von CEIL () anstelle von Round () unerwartete Probleme mit sich bringen kann.
Ceil (float $ value): float
Rund um die überschrittene schwimmende Punktzahl nach oben, dh die kleinste Ganzzahl nicht weniger als dieser Wert zurückgeben.
rund (float $ value, int $ precision = 0, int $ modus = php_round_half_up): float
Die bestandene schwimmende Punktzahl wird gemäß der Rundungsregel mit der Standardgenauigkeit von 0 abgerundet, dh an eine Ganzzahl abgerundet.
<?php
// Testen Sie den Wert
$number1 = 3.2;
$number2 = 3.7;
$number3 = 3.5;
// verwenden ceil()
echo ceil($number1); // 4
echo ceil($number2); // 4
echo ceil($number3); // 4
// verwenden round()
echo round($number1); // 3
echo round($number2); // 4
echo round($number3); // 4
?>
Aus dem obigen Code:
Ceil () wird bedingungslos abgerundet, selbst wenn es 3,1 ist, wird es direkt auf 4 aufgenommen;
Round () basiert auf dem Prinzip der Rundung, 3,2 dauert 3, 3.7 dauert 4 und 3,5 dauert 4.
Angenommen, Ihre Programmlogik bestimmt das Verhalten auf der Grundlage einer bestimmten Punktzahl, z. B.:
Wenn die Punktzahl weniger als 5 beträgt, führen Sie den Betrieb A durch;
Der Bruch ist gleich oder mehr als 5, um den Betrieb B durchzuführen. B.
Wenn Sie CEIL () zum Runden verwenden, werden alle Schwimmpunktzahlen zwischen 4 und 5 auf 5 angehoben, was zu den Bewertungen führt, die die Operation A hätten als Ausführungsoperation B. falsch eingeschätzt werden sollen.
Beispielcode:
<?php
$score = 4.3;
if (ceil($score) >= 5) {
echo "implementierenBarbeiten";
} else {
echo "implementierenAarbeiten";
}
?>
Die Ausgabe ist:
implementierenBarbeiten
Obwohl 4,3 tatsächlich weniger als 5 sind, da Ceil (4,3) gleich 5 ist, wird die Logik durch einen Fehler ausgelöst.
Und wenn es durch rund () ersetzt wird:
<?php
$score = 4.3;
if (round($score) >= 5) {
echo "implementierenBarbeiten";
} else {
echo "implementierenAarbeiten";
}
?>
Die Ausgabe ist:
implementierenAarbeiten
Dies ist, was es ist, die Erwartungen zu erfüllen.
Ceil () eignet sich für Szenarien, in denen das Ergebnis nicht weniger als die ursprüngliche Zahl sein muss, wie z. B.:
Stellen Sie bei der Berechnung der Anzahl der Seiten von Paging sicher, dass die Anzahl der Seiten groß genug ist, um alle Daten abzudecken.
Stellen Sie bei der Berechnung von Kapazität oder Ressourcen sicher, dass kein Mangel vorliegt.
Zum Beispiel:
<?php
$totalItems = 23;
$itemsPerPage = 5;
$totalPages = ceil($totalItems / $itemsPerPage);
echo $totalPages; // 5
?>
Es ist sehr vernünftig, Ceil () hier zu verwenden, und eine Seite kann nicht fehlen.
Ceil () ist bedingungslos nach oben abgerundet, und das Ergebnis ist immer größer als oder gleich der ursprünglichen Zahl.
Round () ist abgerundet und das Ergebnis ist eine Ganzzahl näher an der ursprünglichen Zahl.
Wenn die Programmlogik von "Ansatz" oder "Standardrundung" abhängt, führt die Verwendung von CEIL () zu Urteilsfehlern.
Verwenden Sie Ceil () nur, wenn Sie wirklich ein Ergebnis benötigen, das "garantiert nicht weniger als" ist.
Ich hoffe, dass Sie durch die obige Erklärung die Verwendung dieser beiden Funktionen besser unterscheiden und Programmlogikfehler aufgrund einer falschen Auswahl vermeiden können.
<?php
// verwenden round() Beispiel,Vermeiden Sie logische Fehler
$price = 19.5;
$finalPrice = round($price);
echo "Der endgültige Preis ist: " . $finalPrice; // 20
?>
<?php
// verwenden ceil() Beispiel,Berechnen Sie die Anzahl der Seiten
$totalRecords = 52;
$perPage = 10;
$totalPages = ceil($totalRecords / $perPage);
echo "Gesamtseitenanzahl:" . $totalPages; // 6
?>