PHPでは、 CEIL()関数を使用して、上向きに丸め、浮動小数点値をその数以上に最小整数に変換します。直感的には、天井(5.3)が6を返し、天井(5.0)は5になります。多くの初心者は混乱します。なぜ天井(5.0)が6のような大きな整数を返さないのですか?これには、実際には、関数設計の論理と浮動小数点数の本質が含まれます。
CEIL()関数の公式の定義は次のとおりです。
パラメーター値以下の最小整数を返します。
ここで最も重要なことは、「より大きい」条件です。数字で合格した自体が整数(または整数に相当する浮動小数点数)である場合、整数自体が返されます。
例えば:
<?php
echo ceil(5.3); // 出力 6
echo "\n";
echo ceil(5.0); // 出力 5
?>
5.0は浮動小数点数ですが、整数5に数値的に等しいため、結果は5です。
5.0は浮動小数点数を表しますが、その値はたまたま整数です。 ceil()関数は、データ型ではなく数値のサイズを決定するため、次のとおりです。
値が5.0の場合、上向きの丸めは5です。
値が5.00001の場合、上向きの丸めは6です。
コードを使用してテストできます。
<?php
var_dump(ceil(5.0)); // float(5)
var_dump(ceil(5.00001)); // float(6)
?>
CEIL()関数の動作は、「丸め」の数学的定義、つまり「パラメーターよりも大きい最小の整数をパラメーターよりも大きく戻す」に従います。
それで:
5自体が5.0以上で最小の整数であるため、天井(5.0)は5です。
6が返された場合、実際には「最小整数」の原則に違反します。
結果が整数であることを確認したい場合があり、結果をキャストできます。
<?php
$result = (int) ceil(5.0);
var_dump($result); // int(5)
?>
さらに、 ceil()は浮動小数点数タイプを返し、整数値はフローティングポイント番号として返されます。
CEIL(5.0)は、より大きな整数の代わりに5を返します。これは、機能設計と数学的定義と完全に一致しています。そのコアは、「与えられた値よりも大きい整数を返す」のではなく、「指定された値以上の最小整数を返す」ことです。