PHPのgmp_div_r()関数とは?剰余計算の使い方をわかりやすく解説
PHPのgmp_div_r()関数は、2つのGMP数値(多倍長整数)の間で除算を行い、その余り(剰余)を求めるための関数です。通常の整数型では扱えないような非常に大きな数値を演算したい場合に特に役立ちます。
構文
gmp_div_r(n1, n2)
パラメータ
n1 − 割られる側(被除数)となる最初のGMP数値。PHP 5.6以降ではGMPオブジェクトを指定でき、数値形式の文字列も使用可能です。
n2 − 割る側(除数)となる2番目のGMP数値。こちらもPHP 5.6以降ではGMPオブジェクトを指定でき、数値形式の文字列も使用可能です。
戻り値
gmp_div_r()関数は、n1をn2で割ったときの余りをGMP数値として返します。デフォルトの設定では、商がゼロ方向へ切り捨てられるため、余りの符号は被除数(n1)と同じになります。
使用例
以下に、gmp_div_r()関数を使った具体的なコード例を示します。
<?php $n1 = gmp_init(119); $n2 = gmp_init(14); $a = gmp_div_r($n1, $n2); echo $a; ?>
出力結果
上記のコードを実行すると、次の出力が得られます。
7
これは、119÷14の商が「8」で余りが「7」になるためです。gmp_div_r()はこの余りの部分である「7」を返しています。
補足:丸めモードの指定
gmp_div_r()では、第3引数として丸めモードを指定することもできます。指定できる定数は以下の通りです。
GMP_ROUND_ZERO − 商をゼロ方向へ切り捨てます(デフォルト)。
GMP_ROUND_PLUSINF − 商を正の無限大方向へ丸めます。
GMP_ROUND_MINUSINF − 商を負の無限大方向へ丸めます。
また、商のみが必要な場合はgmp_div_q()関数、商と余りの両方を一度に取得したい場合はgmp_div_qr()関数を使用するとよいでしょう。
-
PHPのgmp_div_q()関数とは?GMP数値の除算方法をわかりやすく解説
gmp_div_q() 関数は、PHPのGMP拡張モジュールが提供する関数の一つで、大きな整数(GMP数値)同士の除算を行い、その商(割り算の結果)を求めるために使用されます。通常の整数型では扱えない桁数の巨大な数値を正確に計算したい場合に非常に便利です。 構文 gmp_div_q(n1, n2, rounding_mode) パラメータ n1 − 割られる側の最初のGMP数値です。PHP 5.6以降ではGMPオブジェクトを指定でき、それ以前のバージョンや一般的な用途では数値文字列も使用可能です。 n2 − 割る側となる2番目のGMP数値です。こちらもPHP 5.6以降ではGMPオブジェクト
-
PHPのgmp_and()関数とは?ビット演算ANDの使い方を解説
PHPの gmp_and() 関数は、2つのGMP数値に対してビット単位のAND(論理積)演算を行い、その結果を返す関数です。GMPライブラリを使用することで、通常の整数型では扱えない大きな数値でも正確にビット演算が可能になります。構文gmp_and($n1, $n2)パラメータn1 − 1つ目のGMP数値。PHP 5.6以降ではGMPオブジェクトを指定できます。数値形式の文字列も渡すことが可能です。n2 − 2つ目のGMP数値。こちらも同様に、PHP 5.6以降ではGMPオブジェクト、または数値形式の文字列を指定できます。戻り値gmp_and() 関数は、ビット単位のAND演算の結果をGMP