JavaScript的取余运算符
原文:The Modulus Operator in JavaScript
JavaScript的取余运算符返回第一个数除以第二个数的余数。
取余运算符,返回第一个数除以第二个数的余数。它也可以叫做取模运算符,虽然技术上取模运算符是另一个不同的概念。
取余运算符一个简单的示例:一商品价格3元,你有7元,你最多买2件,最终余1元。取余运算符a % b
表达的是,如果你有a
元,你尽可能多的购买价格为b
的商品,你最终会剩下的钱。
1 | 7 % 3; // 1 |
在英语中,a % b
念做“a mod b”。
取余运算符有几种用途:
数字的奇偶
一个整数可以被2
整除,那么它是偶数。取余运算符在a
被b
整除时返回0
。那么,检查一个数字是不是偶数,也就相当于检查n % 2 === 0
是否成立。
1 | function isEven(n) { |
相似的,如果n % 2 === 1
,那么n
是奇数。
1 | function isOdd(n) { |
数值的小数部分
一个数值2.5
,要获得小数点后的部分0.5
。最简洁的方法是用这个数% 1
。
1 | function getFractionalPart(n) { |
分钟转换为小时
面对基本的日期时间计算,你又不想引入很重的第三方库,取余运算符就能派上用场了。例如,有一个数值n
代表分钟数(可能大于60分钟),要把它转换为小时和分钟,可以这样做:
1 | const minutesToHoursAndMinutes = n => ({ |
取余?取模?
模是要给相关的概念,但在处理负值时不太一样。例如,-21 % 5 === -1
,因为余数总是取左侧值的符号。然而真正的取模运算符总是返回一个非负数,-21取模5等于4。实践中,很少会出现对负值取余数,所以许多JavaScript开发者没有意识到其中的区别。