In PHP wird die CEIL () -Funktion verwendet, um nach oben abzurunden, wodurch der minimale Ganzzahlwert größer oder gleich der angegebenen Zahl zurückgegeben wird. Viele Entwickler werden feststellen, dass der von CEIL () zurückgegebene Ergebnistyp eher der erwartete int ist. Ist das normal? Gibt es ein Typ Conversion -Problem? Dieser Artikel analysiert den Rückgabetyp der Funktion von CEIL () im Detail und seinen Gründen.
Gemäß der offiziellen PHP -Dokumentation lautet die Definition der CEIL () -Funktion wie folgt:
float ceil(float $value)
Dies bedeutet, dass CEIL () einen schwimmenden Punktparameter nimmt und eine schwimmende Punktzahl zurückgibt. Beispielcode:
<?php
$num = 3.14;
$result = ceil($num);
var_dump($result); // Ausgabe float(4)
?>
Ausgabe:
float(4)
Obwohl das Ergebnis eine Ganzzahl 4 ist, ist der Datentyp ein Float.
Dies liegt daran, dass das Design von PHP feststellt, dass der Rückgabewert von CEIL () immer eine schwimmende Punktzahl ist. Obwohl die Logik von Ceil () ein Rundungsvorgang ist, bleibt sein Rückgabetyp schweben, so dass die Konsistenz in nachfolgenden mathematischen Operationen oder Berechnungen beibehalten werden kann, gemischt mit Gleitkomma-Zahlen.
Zum Beispiel:
<?php
$num = 7.1;
echo ceil($num) + 1.5; // Das Ergebnis ist 9.5
?>
Wenn CEIL () INT zurückgibt, muss PHP möglicherweise während des Berechnungsprozesses in INT um konvertieren und dann eine schwimmende Punktzusatz durchführen, um die Rückgabe des Floats beizubehalten, um unnötige Konvertierung zu vermeiden.
Wenn Sie explizit Ganzzahltypen benötigen, können Sie die Funktion über die Cast oder Intval () verwenden:
<?php
$num = 4.7;
$ceil_float = ceil($num); // float(5)
$ceil_int = (int) $ceil_float; // int(5)
var_dump($ceil_int);
?>
Dies gibt einen reinen Ganzzahltyp.
<?php
// prüfen ceil() Rückgabetyp
$value = 5.3;
$result = ceil($value);
echo "ceil({$value}) = {$result}\n"; // sich herausstellen 6
echo "Typ ist: " . gettype($result) . "\n"; // Typ ist float
// Gegossen zu int
$int_result = (int) $result;
echo "Gegossen zu int 后Typ ist: " . gettype($int_result) . "\n"; // int
?>
Ausgabe:
ceil(5.3) = 6
Typ ist: double
Gegossen zu int 后Typ ist: integer
Der Rückgabewerttyp der CEIL () -Funktion ist Float, das ein normales Verhalten im PHP -Design ist.
Auch wenn der Rückgabewert ein Ganzzahlwert ist, ist der Datentyp immer noch Schwimmer.
Wenn ein Ganzzahltyp erforderlich ist, können Sie (int) oder intval () gießen.
Wenn Sie den Float -Typ beibehalten, vermeiden Sie mehrere Konvertierungen zwischen schwimmenden Punkten und Ganzzahlen und verbessern Sie die Computerleistung.