1

我想知道 JavaScript 如何处理模数。例如,JavaScript 的评估结果47 % 8是什么?我似乎找不到任何关于它的文档,而且我在模数方面的技能也不是最好的。

4

4 回答 4

3

就像每种语言都处理模数一样:X / Y.

47 % 8 == 7

此外,如果您使用 Firefox + Firebug、Safari、Chrome 甚至 IE8+ 等浏览器,您可以像按 F12 一样快速测试这样的操作。

于 2013-01-11T04:49:29.487 回答
2

当给定一个负数作为输入(在左侧)时,Javascript 的模运算符返回一个负数。

14 % 5 // 4
15 % 5 // 0
-15 % 5 // -0
-14 % 5 // -4

(注意:负零在 JavaScript 和其他具有 IEEE 浮点数的语言中是一个不同的值,但-0 === 0您通常不必担心它。)

如果您想要一个始终介于 0 和您指定的正数之间的数字,您可以定义如下函数:

function mod(n, m) {
    return ((n % m) + m) % m;
}
mod(14, 5) // 4
mod(15, 5) // 4
mod(-15, 5) // 0
mod(-14, 5) // 1

余数和模数的比较

于 2020-11-12T17:35:41.873 回答
0

Modulo 的行为应该像您期望的那样。我预计。

47 % 8 == 7

小提琴链接

于 2013-01-11T04:54:53.010 回答
0

为了更好地理解模数,它是如何构建的;

function modulo(num1, num2) {
    if (typeof num1 != "number" || typeof num2 != "number"){
      return NaN
    }
    var num1isneg=false
     if (num1.toString().includes("-")){
      num1isneg=true
    }
      num1=parseFloat(num1.toString().replace("-",""))
      var leftover =parseFloat( ( parseFloat(num1/num2) - parseInt(num1/num2)) *num2)
      console.log(leftover)
            if (num1isneg){
              var z = leftover.toString().split("")
              z= ["-", ...z]
              leftover = parseFloat(z.join(""))
            }
            return leftover
}
于 2021-07-16T00:19:02.563 回答