125

あなたがするときJavaで

a % b

a が負の場合、本来のように b にラップするのではなく、負の結果を返します。これを修正する最善の方法は何ですか? 私が考えることができる唯一の方法は

a < 0 ? b + a : a % b
4

6 に答える 6

162

a % b = a - a / b * b; のように動作します。つまり残りです。

あなたはできる (a % b + b) % b


この式は、が正か負かに関係なく、の結果が(a % b)より必ず小さくなるため機能します。はとの間の負の値であるため、加算は の負の値を処理します。が正の場合はよりも大きくなるため、最後のモジュロは が最初から存在する場合に使用されます。したがって、それをさらに小さくします (負の値には影響しません)。baba(a % b)-b0(a % b + b)baa(a % b + b)b(a % b + b) % bba

于 2010-12-10T18:46:29.060 に答える