こんにちは。
PHPの標準関数のis_infinite()はご存知でしょうか。
is_infinite()に渡した値が無限大であるかどうかを判定してくれる関数なのですが、その説明を見ても「無限大とは?」となり意味がわかりませんでした。
そこで今回は、is_infinite()の機能や「無限大」の基準などをご紹介したいと思います。
is_infinite()の仕様
is_infinite()は以下の形で定義されています。
bool is_infinite(float $num)
$numが無限大である場合にtrueを返し、そうでない場合はfalseを返します。
if (is_infinite($num)) {
// 無限大のときの処理
} else {
// 無限大でないときの処理
}
is_infinite()の無限大の基準
is_infinite()では、float型で扱える値の範囲が無限大の基準となり、$numがその範囲を超えた値のときに無限大と判定します。
PHPのfloat型で扱える値の範囲はそのときの動作環境によって異なり、PHP_FLOAT_MAXという定数でそれを確認することができます。
echo PHP_FLOAT_MAX;
// -> 1.7976931348623E+308
サイズ的には、今回の環境だと128byteあたりが閾値のようです。
var_dump(is_infinite(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1));
// -> bool(true)
PHP_FLOAT_MAXをis_infinite()に渡してみると結果はfalseとなります。
var_dump(is_infinite(PHP_FLOAT_MAX));