js取商的写法

459 阅读2分钟

在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);