取余(%)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
取余(%
)运算符返回左侧操作数除以右侧操作数的余数。它总是与被除数的符号保持一致。
尝试一下
语法
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; // 3
1 % -2; // 1
1 % 2; // 1
2 % 3; // 2
5.5 % 2; // 1.5
被除数为负数
-13 % 5; // -3
-1 % 2; // -1
-4 % 2; // -0
被除数为 NaN
NaN % 2; // NaN
被除数为 Infinity
Infinity % 2; // NaN
Infinity % 0; // NaN
Infinity % Infinity; // NaN
2 % Infinity; // 2
0 % Infinity; // 0
规范
Specification |
---|
ECMAScript Language Specification # sec-multiplicative-operators |
浏览器兼容性
BCD tables only load in the browser