2

私は Java から Ruby に移行していますが、この -7 mod 3 = 2 は私を困惑させます

4

3 に答える 3

8

-7 ひく 2 は 3 の倍数だからです。

より具体的には、その場合に使用されるモジュラスの実装は、たまたま正のモジュラスを選択します。一部の実装では、最初のオペランドと同じ符号のモジュラスを選択し、他の実装では常に正を選択します。

于 2012-07-06T08:02:16.027 に答える
1

要素{0, 1, 2}が時計回りに進む数字ホイールを想像してみてください。

0 から始めて、反時計回りに 7 桁移動します-7( がある場合は+5 mod 3、時計回りに桁移動します5)。

それでは、どこに行くのか見てみましょう。

Current Number:  0 -1 -2 -3 -4 -5 -6 -7
Wheel Number:    0  2  1  0  2  1  0  2
于 2012-07-06T08:06:55.413 に答える
1

mod 関数は、最初のパラメーターよりも小さい最大倍数の上の剰余を返します。

3 を 7 で割った場合、6 は 7 より小さい最大の倍数なので、1 が答えです (7-6)。

-7 なので、-9 は -7 より小さい最大の倍数なので、2 が答えです (-7- -9、または -7+9)。

于 2012-07-06T08:07:08.050 に答える