PHPのis_nan()関数とは?使い方と実行例をわかりやすく解説
PHPのis_nan()関数は、引数として渡された値が「NAN(Not A Number:非数)」であるかどうかを判定するための関数です。数値演算の結果が不正な値になったかどうかを確認したい場合に役立ちます。
定義と使い方
NANは「Not A Number(非数)」の略で、数学的に定義できない数値演算の結果などを表します。is_nan()関数は、引数がNANであるかどうかをチェックし、その結果をブール値(true / false)で返します。
構文
is_nan ( float $val ) : bool
パラメータ
| No. | パラメータと説明 |
|---|---|
| 1 | val NANであるかどうかを検証する対象の値(float型) |
戻り値
引数valが「非数(NAN)」であればtrueを返し、そうでなければfalseを返します。
対応するPHPバージョン
この関数は、PHP 4.x、PHP 5.x、PHP 7.x のすべてのバージョンで利用可能です。
使用例1:通常の整数値の場合
次の例では、整数値100がNANとして判定されるかどうかを確認しています。
<?php
$val = 100;
$ret = is_nan($val);
var_dump($val, $ret);
?>
出力結果
int(100) bool(false)
100は通常の数値なので、is_nan()はfalseを返します。
使用例2:log(0) の場合
log(0) の結果は負の無限大(-INF)となります。これがNANかどうかを検証してみましょう。
<?php
$val = log(0);
$ret = is_nan($val);
var_dump($val, $ret);
?>
出力結果
float(-INF) bool(false)
無限大(INF)はNANとは別の概念であるため、結果はfalseになります。
使用例3:acos() に範囲外の値を渡した場合
cos(x) の値は必ず -1 ~ 1 の範囲に収まります。そのため、この範囲外の値を acos() に渡すと、結果はNANになります。
<?php
$val = acos(5);
$ret = is_nan($val);
var_dump($val, $ret);
?>
出力結果
float(NAN) bool(true)
定義域外の値が渡されたため結果がNANとなり、is_nan()はtrueを返します。
使用例4:sqrt(-1) の場合
同様に、負の数の平方根を求める sqrt(-1) もNANを返すため、is_nan()関数はtrueを返します。
<?php
$val = sqrt(-1);
$ret = is_nan($val);
var_dump($val, $ret);
?>
出力結果
float(NAN) bool(true)
まとめ
is_nan()関数は、数学的に定義できない演算結果(NAN)を検出するために使用します。無限大(INF)はNANとは区別される点に注意してください。不正な数値演算のエラーチェックなどに活用すると、プログラムの信頼性を高めることができます。
-
PHPのis_nan()関数とは?使い方と実行例をわかりやすく解説
PHPのis_nan()関数は、引数として渡された値が「NAN(Not A Number:非数)」であるかどうかを判定するための関数です。数値演算の結果が不正な値になったかどうかを確認したい場合に役立ちます。 定義と使い方 NANは「Not A Number(非数)」の略で、数学的に定義できない数値演算の結果などを表します。is_nan()関数は、引数がNANであるかどうかをチェックし、その結果をブール値(true / false)で返します。 構文 is_nan ( float $val ) : bool パラメータ No.パラメータと説明 1 valNANであるかどうかを検証する
-
PHPのis_nan()関数とは?NaN(非数)判定の使い方とサンプルコードを解説
is_nan()関数とはPHPのis_nan()関数は、指定した値が「NaN(Not a Number:非数)」であるかどうかを判定するための関数です。引数に渡した値が非数であればTRUEを、そうでなければFALSEを返します。NaNは、数学的に定義できない演算(例:負の数の平方根や、定義域外の値に対する三角関数の計算など)の結果として現れる特殊な浮動小数点値です。数値処理を行うプログラムでは、異常な計算結果を検出するためにこの関数がよく活用されます。構文is_nan(num)パラメータnum − NaNかどうかをチェックする対象の値戻り値numが「非数(NaN)」であればTRUEを、それ以外