我将其输入google / wolfram alpha:
-15 % 360
我得到345
。
当我在javascript中执行此操作时,我得到-15
https://www.google.com/search?q=-15%20%%20360
答案 0 :(得分:1)
%(remainder)运算符在JavaScript中没有“破坏”,即使结果可能是意外的 - 特别是预计会有更严格的数学模运算。
行为在ECMAScript中定义明确。见11.5.3 Applying the % Operator:
%[余数]运算符从隐含的除法中产生其余的操作数;左操作数是被除数,右操作数是除数..
..来自被除数n和除数d的[浮点]余数r由数学关系r = n - (d * q)定义,其中q是仅在n时为负的整数只有当n / d为正时,/ d才为负数和正数 ..
以这种方式,它的行为方式与remainder operator in Java或C#相同(对于整数输入)。
有一些论据认为should be referred to as the remainder operator可以避免这种混淆:ES5确实隐含地将其称为“余数运算符”,但Mozilla JavaScript Reference将其称为“模运算符”。
另见Modulus operation with negatives values - weird thing?,它实际上从另一个角度看待“破裂”。