Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模运算符以负值报告不同的结果_Javascript_Math_Operator Keyword_Modulo - Fatal编程技术网

Javascript 模运算符以负值报告不同的结果

Javascript 模运算符以负值报告不同的结果,javascript,math,operator-keyword,modulo,Javascript,Math,Operator Keyword,Modulo,我在google/wolfram alpha中输入: -15%360 我得到了345 当我在javascript中这样做时,我得到-15 JavaScript中的%()运算符没有“断开”,即使结果可能出乎意料-尤其是在预期会有更严格的数学模运算的情况下 该行为在ECMAScript中定义良好。见: %[余数]运算符从隐含除法得到其操作数的余数;左操作数是被除数,右操作数是除数 。。被除数n和除数d的[浮点]余数r由数学关系r=n定义− (d*q),其中q是仅当n/d为负且仅当n/d为正时才为

我在google/wolfram alpha中输入:

-15%360

我得到了
345

当我在javascript中这样做时,我得到
-15

JavaScript中的%()运算符没有“断开”,即使结果可能出乎意料-尤其是在预期会有更严格的数学模运算的情况下

该行为在ECMAScript中定义良好。见:

%[余数]运算符从隐含除法得到其操作数的余数;左操作数是被除数,右操作数是除数

。。被除数n和除数d的[浮点]余数r由数学关系r=n定义− (d*q),其中q是仅当n/d为负且仅当n/d为正时才为负且仅当n/d为正时才为正的整数

以这种方式,它的行为方式与或C#(用于整数输入)的行为方式相同

有人认为它是为了避免这种混淆:ES5确实隐式地将其称为“余数运算符”,但ES5将其称为“模运算符”



另请参阅,它实际上是从另一个角度来看待“破碎性”。

自己运行它,看看我在Dolphin、Safari、Chrome、Firefox、IE、OperaBtw、Coffeescript等人类已知的每个环境中都进行了测试。Coffeescript使用
%%
操作符修复了这个问题。它没有“破碎”。它在中有很好的定义。相对于整数除法,模必须满足a%b=a-(a/b)*b。现在我们必须决定(-15)/360、0或-1的值更自然。0表示负余数,-1表示正余数。JS决定在整数除法中向0舍入,从而给出负余数。