カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

割り算した余りを求める [PHP]

この記事は最終更新日から1年以上経過しています。

除算(割り算)した剰余(じょうよ:余り)を求めるには以下のようにします。

$surplus = 1564 % 1000;
echo $surplus;

出力結果

564

他の言語でも、同様の演算子があるかと思います。
例えばVBなら「mod」です。

しかし、引数が整数型(Integer)ではない場合、意図しない結果が返ってくることがあります。

$surplus = (65.1 * 1000) % 1000;
echo $surplus;

こうした場合、出力結果は「99」となってしまいます。
これは引数が浮動小数点型であることが原因のようです。
これを回避するには以下のようにします。

$argc = 65.1 * 1000;
$surplus = bcmod("$argc", "1000");
echo $surplus;

引数はString(文字列型)です。

出力結果

100

但し、bcmodはBCMath数学関数ですので、PHPが「--enable-bcmath」と構築オプションを付けてコンパイルされてない場合は使用できません。

PHPを再コンパイルできない環境の場合は以下のようにすれば同じ結果が得られると思います。

$surplus = round(fmod(65.1 * 1000, 1000));
echo $surplus;

fmodの引数はfloat(単精度浮動小数点型)です。

言語によっては結果が異なってくる場合もあるので、注意が必要ですね。

この記事がお役に立ちましたらシェアお願いします
10,289 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です