PHPのfmod()関数とは?浮動小数点数の剰余を求める方法を解説
PHPには、整数の剰余を求める「%」演算子がありますが、浮動小数点数の剰余を求めたい場合にはfmod()関数を使用します。この記事では、fmod()関数の定義、構文、パラメータ、戻り値に加え、符号の扱いや0を含む場合の挙動まで、具体例とともにわかりやすく解説します。
定義と使い方
fmodは「floating modulo(浮動小数点剰余)」の略称です。この関数は、2つの浮動小数点数を除算した際の余り(剰余)を返します。x ÷ y の商を i、余りを r とすると、次の関係が成り立ちます。
x = y × i + r
このとき、fmod(x, y) は r を返します。
構文
fmod ( float $x , float $y ) : float
パラメータ
| 番号 | パラメータと説明 |
|---|---|
| 1 | x 除算式における被除数(分子)にあたる値です。 |
| 2 | y 除算式における除数(分母)にあたる値です。 |
戻り値
PHPのfmod()関数は、x を y で除算した際の浮動小数点数の剰余を返します。剰余は被除数 x の符号を引き継ぐという特徴があります。
対応するPHPバージョン
この関数は、PHP 4.x、PHP 5.x、PHP 7.x のすべてのバージョンで利用可能です。
補足:%演算子との違い
PHPの「%」演算子はオペランドを整数に変換してから計算を行うため、浮動小数点数に対しては正確な結果が得られません。浮動小数点数の剰余を求める場合は、必ず fmod() 関数を使用してください。
使用例1:基本的な剰余計算
次の例では、5.25 を 1.5 で割った余りを計算し、0.75 を返します。
<?php
$x=5.25;
$y=1.5;
$r=fmod($x, $y);
echo "fmod(" . $x . "," . $y . ") = " . $r;
?>
出力結果
上記のコードを実行すると、以下の結果が出力されます。
fmod(5.25,1.5) = 0.75
使用例2:被除数が負の場合
次の例では、被除数(分子)が負の値です。剰余は被除数の符号を引き継ぐため、結果も負の値になります。
<?php
$x=-10;
$y=3;
$r=fmod($x, $y);
echo "fmod(" . $x . "," . $y . ") = " . $r;
?>
出力結果
上記のコードを実行すると、以下の結果が出力されます。
fmod(-10,3) = -1
使用例3:両方の引数が負の場合
次の例では、両方の引数(-10 と -3)が負の値です。剰余は被除数の符号を引き継ぐため、結果は -1 となります。
<?php
$x=-10;
$y=-3;
$r=fmod($x, $y);
echo "fmod(" . $x . "," . $y . ") = " . $r;
?>
出力結果
上記のコードを実行すると、以下の結果が出力されます。
fmod(-10,-3) = -1
使用例4:0を含む場合の挙動
被除数が 0 で除数が非ゼロの場合、剰余は 0 になります。一方、除数が 0 の場合、剰余は NAN(Not a Number)となるので注意が必要です。
<?php
$x=0;
$y=3.33;
$r=fmod($x, $y);
echo "fmod(" . $x . "," . $y . ") = " . $r . "\n";
$r=fmod($y, $x);
echo "fmod(" . $y . "," . $x . ") = " . $r;
?>
出力結果
上記のコードを実行すると、以下の結果が出力されます。
fmod(0,3.33) = 0 fmod(3.33,0) = NAN
-
PHPのfmod()関数とは?浮動小数点数の剰余を求める方法を解説
PHPには、整数の剰余を求める「%」演算子がありますが、浮動小数点数の剰余を求めたい場合にはfmod()関数を使用します。この記事では、fmod()関数の定義、構文、パラメータ、戻り値に加え、符号の扱いや0を含む場合の挙動まで、具体例とともにわかりやすく解説します。 定義と使い方 fmodは「floating modulo(浮動小数点剰余)」の略称です。この関数は、2つの浮動小数点数を除算した際の余り(剰余)を返します。x ÷ y の商を i、余りを r とすると、次の関係が成り立ちます。 x = y × i + r このとき、fmod(x, y) は r を返します。 構文 fmod (
-
PHPのfmod()関数とは?浮動小数点数の剰余を求める方法を解説
PHPのfmod()関数は、被除数(割られる数)を除数(割る数)で割ったときの剰余(あまり)を返す関数です。整数だけでなく、浮動小数点数(float)同士の剰余も計算できるのが特徴で、通常の剰余演算子「%」では扱えない小数の計算に活用できます。基本構文fmod(被除数, 除数)パラメータ被除数(dividend) − 割られる側の数値を指定します。除数(divisor) − 割る側の数値を指定します。戻り値被除数を除数で割った結果の剰余(float型)を返します。戻り値は常に被除数と同じ符号になります。なお、除数に0を指定した場合は警告が発生し、NANが返されるので注意が必要です。使用例<