在JavaScript中没有Modulo(%)运算符的剩余时间,请考虑 - / 符号



对于家庭作业,我需要在不使用内置modulo(%)运算符的情况下将num1划分为num1之后返回剩余。我能够通过以下代码获得大多数测试,但是我遇到了如何考虑给定数字的 -/符号。我需要在num1上携带任何标志,如果num2为负,也需要返回一个正数 - 这让我想到了如何做到这一点... :)任何清晰度都将不胜感激!我并不是在这里寻找直接的答案,而我似乎缺少明显的东西……也许我需要一种新的方法?

    function modulo(num1, num2) {
      if (num1 === 0) {
        return 0;
      }
      if (num2 === 0 || isNaN(num1) || isNaN(num2)) {
        return NaN;
      }
      if (num1 < num2) {
        return num1;
      }
      if (num1 > 0 && num2 > 0) {
        var counter = num1;
      while (counter >= Math.abs(num2)) {
        counter = counter - num2;
      }
      return counter;
      }
    }
    var output = modulo(25, 4);
    console.log(output); // 1

如果您考虑计算模量的数学过程,则可以看到如何在而无需求助于一堆案例语句的情况下做到这一点。相反,您只是在计算剩余的时间:

给定的2个数字A和B,您可以通过以下几种来计算mod(a,b)

q = a / b;  //finding quotient (integer part only)
p = q * b;  //finding product
remainder = a - p;  //finding modulus

使用这个想法,您应该能够将其传输到JS。您说您不是在寻找直接的答案,所以我要说的就是

编辑:这是代码,就像我在评论中所说的那样,正是我上面发布的伪代码:

function modulo(a,b){
  q = parseInt(a / b);  //finding quotient (integer part only)
  p = q * b;  //finding product
  return a - p;  //finding modulus
}

这将返回与使用%

完全相同的值

您可能会对此进行过多思考。您基本上在问题中说明了解决方案:

我需要在num1上携带任何符号,并且如果num2为负

,也需要返回正数

第二部分不准确,但我怀疑您只是拼错。当num2为负时,应返回正数,除非 num1为负。

无论如何,重要的要点是,如果num1为负,则结果将为负,否则结果将为正。num2的迹象被丢弃。

启动您编写的代码(其他人会很快指出并不是最简单的解决方案),修复程序是使用两个数字的绝对值来计算其余部分,然后将num1的原始符号应用于结果。

function modulo(num1, num2) {
  var sign = num1 < 0 ? -1 : 1;
  var dividend = Math.abs(num1);
  var divisor = Math.abs(num2);
  if (dividend === 0) {
    return 0;
  }
  if (dividend === 0 || isNaN(dividend) || isNaN(divisor)) {
    return NaN;
  }
  if (dividend < divisor) {
    return sign * dividend;
  }
  
  var counter = dividend;
  while (counter >= divisor) {
    counter = counter - divisor;
  }
  return sign * counter;
}
console.log( 25 %  4, modulo( 25,  4));
console.log(-25 %  4, modulo(-25,  4));
console.log( 25 % -4, modulo( 25, -4));
console.log(-25 % -4, modulo(-25, -4));
.as-console-wrapper{min-height:100%;}

这是基本公式: dividend = divisor * quotient + remainder从这个方程式您可以计算剩余的。

最新更新