在js中整除运算符(/)执行的是常规的除法运算,返回的是两个数相除的商,这个商可以是整数,也可以是小数。例如,7 / 3的结果是2.3333...,是一个无限循环小数。那么如何实现整除只取商,不要余数呢?
使用Math.floor()函数
Math.floor()函数会将一个数字向下取整为最接近的整数,可用于实现整除。
let dividend = 7;
let divisor = 2;
let quotient = Math.floor(dividend / divisor);
console.log(quotient);
使用Math.trunc()函数
Math.trunc()函数会去除数字的小数部分,返回整数部分,也能达到整除的效果。
let dividend = 7;
let divisor = 2;
let quotient = Math.trunc(dividend / divisor);
console.log(quotient);
使用位运算(仅适用于整数)
按位右移运算符>>可以将数字的二进制表示向右移动指定的位数,相当于将数字除以 2 的指定次幂并向下取整。对于整除 2 的操作,可直接使用该运算符。
let number = 7;
let quotient = number >> 1;
console.log(quotient);
如果要实现除以其他整数的整除效果,可结合乘法和位运算来实现。例如,要实现除以 4(即 2 的 2 次方),可写为(number * (1 << 0)) >> 2 。不过这种方式相对复杂,且仅适用于整数运算。
利用parseInt()函数
parseInt()函数可以将字符串转换为整数。可以先将除法运算的结果转换为字符串,再使用parseInt()提取整数部分来获取商。示例如下:
let dividend = 7;
let divisor = 2;
let quotient = parseInt((dividend / divisor).toString(), 10);
console.log(quotient);
自定义函数
可以通过自定义函数来实现取商功能,例如使用循环减法的方式模拟除法运算来获取商。示例代码如下:
function getQuotient(dividend, divisor) {
let quotient = 0;
while (dividend >= divisor) {
dividend -= divisor;
quotient++;
}
return quotient;
}
let dividend = 7;
let divisor = 2;
let quotient = getQuotient(dividend, divisor);
console.log(quotient);