【问题标题】:What does % do in JavaScript?% 在 JavaScript 中做了什么?
【发布时间】:2012-02-12 14:42:13
【问题描述】:

% 在 JavaScript 中有什么作用?

非常感谢它是什么以及它的作用的定义。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这是一个 modulo operator。有关 JavaScript 算术运算符的更多信息,请参阅此 documentation 或 the specification。

    %(模数)

    取模运算符的用法如下:

    var1 % var2

    模运算符返回第一个操作数模第二个 操作数,即 var1 模 var2,在前面的语句中,其中 var1 和 var2 是变量。模函数是整数 var1 除以 var2 的余数。例如,12 % 5 返回 2。 结果将与 var1 具有相同的符号;也就是说,-1 % 2 返回 -1。

    【讨论】:

    • 如果您希望运算符返回一个整数(例如日历计算),则应在应用 % 运算符之前将 var1 和 var2 截断为整数。模数就是这样定义的,不能按原样使用 % 。例如:获取 2017 年 3 月的最后一个星期日。31 - (((((5 * 2017) / 4) + 4) % 7)) == 25.75 // Not a valid date 31 - (~~((((5 * 2017) / 4) + 4) % 7)) == 26 // Correct
    • 这个答案不太正确。它是一个余数运算符。他们是不一样的! developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    【解决方案2】:

    ES6 更新:

    正如其他答案中所解释的,它在将被除数除以除数后返回余数,但这不再是模运算符,这是remainder operator. 不同之处在于模运算符结果将采用符号除数,而不是除数。引自MDN

    余数运算符返回一个操作数除以第二个操作数时的余数。 它总是取除数的符号,而不是除数。它使用内置的模函数来生成结果,即var1 除以var2 的整数余数——例如——var1 modulo var2。 There is a proposal to get an actual modulo operator in a future version of ECMAScript,不同之处在于模运算符结果将采用除数的符号,而不是被除数。

    示例:

    -10 % 3 // -1
    10 % -3 // 1
    

    【讨论】:

    • 这个答案说明了与带有不同符号的除数和除数一起使用时与“真正的”模运算符和当前 JavaScript 余数运算符的主要区别。这是一个细微差别,如果不加以考虑,可能会导致您的算法出现错误。
    【解决方案3】:

    它返回除法运算的余数。 5%2 返回1

    【讨论】:

      【解决方案4】:

      它是一个模运算符。
      它计算余数。

      如果我们做 23 % 10,
      首先,我们将 23 除以 10,等于 2.3
      然后取 .3 *(除数)10
      = 3

      【讨论】:

        【解决方案5】:

        那就是modulo operator。

        它返回除法运算的余数:

        var remainder = 3 % 2; // equals 1
        

        【讨论】:

          【解决方案6】:

          以防万一,如果有人正在寻找一个真正的模函数(它总是会得到除数的符号),你可以使用这个:

          function Modulo(num, denom)
          {
              if (num%denom >= 0)
              {
                  return Math.abs(num%denom);
              }
              else
              {
                  return num%denom + denom;
              }
          }
          

          Math.abs是为了防止-12%12→-0的情况,认为等于0但显示为-0。

          【讨论】:

            【解决方案7】:

            模数 (%) 运算符返回余数。

            如果任一值是字符串,则尝试将字符串转换为数字。

            alert(5%3) 会提醒2

            【讨论】:

              【解决方案8】:

              在 JavaScript 中,% 是 remainder operator(不是模运算符)。

              余数运算符 %(使用 Math.truc()):

              remainder = -5 % 3 = -2
              

              它是如何计算的?

              quotient  = Math.trunc(dividend / divisor) = Math.trunc(-5 / 3) = -1;
              remainder = dividend - divisor * quotient  = -5 - (3 * -1) = -2
              

              模函数(使用Math.floor()):

              modulo(-5,3) = 1
              

              它是如何计算的?

              quotient = Math.floor(dividend / divisor) = Math.floor(-5 / 3) = -2;
              remainder = dividend - divisor * quotient = -5 - (3 * -2) = 1
              

              对于正数,余数运算符和模都会给出相同的结果。

              5 % 3 = 2
              modulo(5,3) = 2
              

              在 JavaScript 中,没有内置函数来做模运算,所以你需要像上面那样使用 Math.floor() 自己编写。或者,您也可以使用余数运算符轻松编写,如下所示。

              function modulo(n, m) {
                 return ((n % m) + m) % m;
              }
              

              【讨论】:

                【解决方案9】:

                % 执行模运算符,返回除法提示。示例:

                <script>
                    var x = 5;
                    var y = 2;
                    var z = x % y;
                    alert(z);
                </script>
                

                这将提醒 1。

                【讨论】:

                  猜你喜欢
                  • 2011-07-24
                  • 2013-04-09
                  • 2011-10-21
                  • 2012-02-26
                  相关资源
                  最近更新 更多