PHP 8のfdiv()関数とは?浮動小数点除算の使い方を徹底解説
PHP 8で導入されたfdiv()関数は、IEEE 754規格に基づいて浮動小数点除算を実行するための関数です。2つの数値を受け取り、その商を浮動小数点数として返します。
fdiv()関数は、intdiv()やfmod()と同様にゼロによる除算(ゼロ除算)が可能な点が特徴です。通常、PHPではゼロで割り算を行うとエラー(DivisionByZeroError)が発生しますが、fdiv()を使用すると、エラーをスローする代わりにINF、-INF、またはNANという特殊な値を返します。
戻り値として返される特殊な値
INF(無限大) – 数学的に無限大となる数値計算の結果を表します。正の数をゼロで割った場合などに返されます。
-INF(負の無限大) – 負の無限大を表す値です。-1.796E308より小さい数値もこれに該当します。負の数をゼロで割った場合などに返されます。
NAN(Not a Number/非数) – 不定となった数値計算の結果を表します。数学関数の引数が定義域外である場合などに返されます。
以下のような計算は、いずれも不定となるためNANが返されます。
0/0 = NAN INF/INF = NAN
例1:fdiv()関数の基本的な使い方
まずは、一般的な浮動小数点除算の例を見てみましょう。
<?php echo fdiv(15, 4); ?>
出力結果
3.75
15を4で割ると3.75となるため、小数点以下を含む正確な結果が浮動小数点数として返されています。
例2:ゼロ除算時の挙動
次に、除数(割る数)がゼロの場合の挙動を確認してみます。
<?php echo fdiv(10, 0); // INF(正の無限大) echo fdiv(-10, 0); // -INF(負の無限大) echo fdiv(0, 0); // NAN(非数) ?>
出力結果
INF-INF NAN
このように、fdiv()関数を使えば、ゼロ除算による致命的なエラーを回避しながら安全に除算処理を行うことができます。
まとめ
fdiv()関数は、ユーザー入力などの不確定な値で除算を行う際に特に便利です。例外処理を記述することなく、INF・-INF・NANといった特殊な値で結果を判定できるため、堅牢なコードを簡潔に書くことができます。PHP 8以降での浮動小数点除算には、積極的に活用しましょう。
-
PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説
PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)
-
PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説
PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。基本構文fscanf(file_pointer, format, mixed)パラメータの詳細file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。%% − パーセント記号(%)そのものを返す%b − 2進数として読み込