此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
取余(%)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
取余(%
)运算符返回左侧操作数除以右侧操作数的余数。它总是与被除数的符号保持一致。
In this article
尝试一下
console.log(13 % 5);// Expected output: 3console.log(-13 % 5);// Expected output: -3console.log(4 % 2);// Expected output: 0console.log(-4 % 2);// Expected output: -0
语法
x % y
描述
对于运算:n % d
,其中n
被称为被除数,d
被称为除数。如果其中的任意一个操作数为NaN
,或n
为正负无穷(±Infinity),又或者d
为 ±0,则该运算返回NaN
。否则,如果d
为正负无穷(±Infinity),或n
为 ±0,则返回被除数n
。
如果两个操作数都非零且有限(非正负无穷)时,余数r
将通过r := n - d * q
计算获得,其中q
是一个使得r
与被除数n
具有相同符号,并且会使r
尽可能地接近于 0 的整数。
请注意,虽然在大多数语言中,%
是取余运算符,但在某些语言(例如:Python 和 Perl)中,它是取模运算符。取模运算被定义为k := n - d * q
,其中q
是一个使得k
与除数具有相同符号,并且会使k
尽可能地接近于 0 的整数。对于同号的两根操作数,两者是等价的,但在操作数具有不同的符号时,取模运算的结果总是与除数同号,而取余运算则是余数与被除数同号,d
的符号即可使两者的结果不相同。为了在 JavaScript 中使用n % d
实现取模运算,可以使用((n % d) + d) % d
。在 JavaScript 中,模运算(没有专用的运算符)用于规范化按位移位运算符(<<
、>>
,等等)的第二个操作数,以使得偏移量始终为一个正数。
示例
>被除数为正数
13 % 5; // 31 % -2; // 11 % 2; // 12 % 3; // 25.5 % 2; // 1.5
被除数为负数
-13 % 5; // -3-1 % 2; // -1-4 % 2; // -0
被除数为 NaN
NaN % 2; // NaN
被除数为 Infinity
Infinity % 2; // NaNInfinity % 0; // NaNInfinity % Infinity; // NaN2 % Infinity; // 20 % Infinity; // 0
规范
Specification |
---|
ECMAScript® 2026 Language Specification> # sec-multiplicative-operators> |
浏览器兼容性
Loading…