取余(%) - JavaScript

取余(%) - JavaScript

尝试一下

console.log(13 % 5);

// Expected output: 3

console.log(-13 % 5);

// Expected output: -3

console.log(4 % 2);

// Expected output: 0

console.log(-4 % 2);

// Expected output: -0

语法

jsx % 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 中,模运算(没有专用的运算符)用于规范化按位移位运算符(<<、>>,等等)的第二个操作数,以使得偏移量始终为一个正数。

示例

被除数为正数

js13 % 5; // 3

1 % -2; // 1

1 % 2; // 1

2 % 3; // 2

5.5 % 2; // 1.5

被除数为负数

js-13 % 5; // -3

-1 % 2; // -1

-4 % 2; // -0

被除数为 NaN

jsNaN % 2; // NaN

被除数为 Infinity

jsInfinity % 2; // NaN

Infinity % 0; // NaN

Infinity % Infinity; // NaN

2 % Infinity; // 2

0 % Infinity; // 0

规范

规范

ECMAScript® 2027 Language Specification# sec-multiplicative-operators

浏览器兼容性

参见

加法运算符

减法运算符

除法运算符

乘法运算符

幂运算符

自增运算符

自减运算符

一元减运算符

一元加运算符

取余运算和取模运算的区别

帮助改进 MDN

此页面对您有帮助吗?

了解如何参与贡献

此页面最后更新于 2025年7月16日,由 MDN 贡献者更新。

在 GitHub 上查看此页面 • 报告此内容的问题

🌸 相关推荐