Regarding the operation of division with remainder (%) - it differs from the one accepted in mathematics, since it is looking for "refusal" and not "remainder" - a feature of the idiv implementation in 8086
学校で習った初等算術を憶えていますか? この演算子はそれらと同様に動作します。
例 | 名前 | 結果 |
---|---|---|
+$a | 同一 | $a を、必要に応じて int あるいは float に変換する |
-$a | 負にする | $a の逆 |
$a + $b | 加算 | $a および $b の合計 |
$a - $b | 減算 | $a と $b の差 |
$a * $b | 乗算 | $a および $b の積 |
$a / $b | 除算 | $a および $b の商 |
$a % $b | 剰余 | $a を $b で割った余り |
$a ** $b | 累乗 | $a の $b 乗。 |
除算演算子 ("/") の返す値は浮動小数点数となります。 ただし、ふたつのオペランドがともに整数 (あるいは整数に変換できる文字列) であり、かつ結果が割り切れる場合には整数値を返します。 整数の除算については intdiv() を参照ください。
剰余演算子は、まず両方のオペランドを整数に直してから処理を行います。 浮動小数点の剰余については fmod() を参照ください。
剰余演算子 %
の結果の符号は、被除数の符号と同じになります。
つまり、$a % $b
の結果の符号は
$a と同じになるということです。
<?php
echo (5 % 3)."\n"; // 2
echo (5 % -3)."\n"; // 2
echo (-5 % 3)."\n"; // -2
echo (-5 % -3)."\n"; // -2
?>
Regarding the operation of division with remainder (%) - it differs from the one accepted in mathematics, since it is looking for "refusal" and not "remainder" - a feature of the idiv implementation in 8086