在JavaScript中,我如何得到:

一个给定整数除另一个整数的整数倍是多少? 其余的呢?


当前回答

如果你只是用2的幂除法,你可以使用位运算符:

export function divideBy2(num) {
  return [num >> 1, num & 1];
}

export function divideBy4(num) {
  return [num >> 2, num & 3];
}

export function divideBy8(num) {
  return [num >> 3, num & 7];
}

(第一个是商,第二个是余数)

其他回答

如果你只是用2的幂除法,你可以使用位运算符:

export function divideBy2(num) {
  return [num >> 1, num & 1];
}

export function divideBy4(num) {
  return [num >> 2, num & 3];
}

export function divideBy8(num) {
  return [num >> 3, num & 7];
}

(第一个是商,第二个是余数)

对于某个数y和某个除数x,计算商(商)[1]和余数(余)为:

const quotient = Math.floor(y/x);
const remainder = y % x;

例子:

const quotient = Math.floor(13/3); // => 4 => the times 3 fits into 13  
const remainder = 13 % 3;          // => 1

[1]由一个数除以另一个数得到的整数

这里有一个方法。(就个人而言,我不会这样做,但认为这是一个有趣的方式来做的例子)上面提到的方式肯定是更好的,因为它调用多个函数,因此更慢,以及占用更多的空间在你的包。

函数intDivide(分子,分母){ 回归方法((分子/分母).toString () .split(“。”)[0]); } let x = intDivide(4,5); let y = intDivide(5,5); let z = intDivide(6,5); console.log (x); console.log (y); console.log (z);

ES6引入了新的数学。trunc方法。这允许修复@MarkElliot的答案,使其适用于负数:

var div = Math.trunc(y/x);
var rem = y % x;

注意,Math方法与位运算符相比有一个优势,那就是它们处理大于231的数字。

const idivmod = (a, b) => [a/b |0, a%b];

还有一项关于这个问题的提案 模量和附加整数数学