Javascript模块化算术

wal*_*ith 7 javascript modular-arithmetic

Javascript将以下代码片段评估为-1.

-5 % 4

我知道余数定理表明a = bq + r使得0≤r<b.鉴于上面的定义,答案不应该是3?为什么JavaScript返回-1?

nul*_*ent 8

因为它是余数运算符,而不是模数.但是有一个适当建议.

引自Ecma 5.1

余数r来自被除数n,除数d由数学关系r = n - (d×q)定义,其中q是一个整数,只有当n/d为负时才为负,只有当n/d为正时才为正


nik*_*ssc 6

大多数编程语言使用对称模数,这与负值的数学模数不同。

数学模可以使用对称模计算,如下所示:

a mod b = ((a % b) + b) % b
Run Code Online (Sandbox Code Playgroud)

mod 数学模数

% 对称模