8

Javascript は、次のコード スニペットを -1 に評価します。

-5% 4

剰余定理は a = bq + r で 0 ≤ r < b であることを理解しています。上記の定義を考えると、答えは 3 ではないでしょうか? JavaScript が -1 を返すのはなぜですか?

4

5 に答える 5

8

モジュロではなく、剰余演算子であるためです。しかし、適切なものの提案があります

Ecma 5.1 からの引用

被除数 n と除数 d からの剰余 r は、数学的関係 r = n − (d × q) によって定義されます。ここで、q は、n/d が負の場合にのみ負になり、n/d が正の場合にのみ正になる整数です。

于 2014-09-08T14:40:40.420 に答える
1

その理由は、それが剰余ではなく剰余%演算だからです。こちらをご覧ください

于 2014-09-08T14:41:42.187 に答える
0

...剰余がゼロでない場合、剰余には負と正の 2 つの選択肢があり、商にも 2 つの選択肢があります。通常、数論では常に正の剰余が選択されますが、プログラミング言語は言語と a と n の符号に応じて選択します。( http://en.wikipedia.org/wiki/Modulo_operation )

Pythonでは、除数の符号を取ります:

   -5 % 4 ==  3   # -5 = (-2) * 4 + 3

被除数の記号を取るjavascriptで:

   -5 % 4 ==  -1   # -5 = (-1) * 4 - 1
于 2014-09-08T14:47:09.843 に答える
0

を使用%して剰余演算を行う場合、(少なくとも概念的には)-5 % 4が -1 と評価されるか 3 と評価されるかは問題ではありません。これらの 2 つの数値は 4 を法として合同であるためです。剰余算術の目的では、それらは同じです。 .

于 2015-04-24T23:26:20.790 に答える