あなたがするときJavaで
a % b
a が負の場合、本来のように b にラップするのではなく、負の結果を返します。これを修正する最善の方法は何ですか? 私が考えることができる唯一の方法は
a < 0 ? b + a : a % b
あなたがするときJavaで
a % b
a が負の場合、本来のように b にラップするのではなく、負の結果を返します。これを修正する最善の方法は何ですか? 私が考えることができる唯一の方法は
a < 0 ? b + a : a % b
a % b = a - a / b * b; のように動作します。つまり残りです。
あなたはできる (a % b + b) % b
この式は、が正か負かに関係なく、の結果が(a % b)
より必ず小さくなるため機能します。はとの間の負の値であるため、加算は の負の値を処理します。が正の場合はよりも大きくなるため、最後のモジュロは が最初から存在する場合に使用されます。したがって、それをさらに小さくします (負の値には影響しません)。b
a
b
a
(a % b)
-b
0
(a % b + b)
b
a
a
(a % b + b)
b
(a % b + b) % b
b
a