📜  如何在 JavaScript 中使用模运算符得到否定结果?

📅  最后修改于: 2022-05-13 01:56:54.233000             🧑  作者: Mango

如何在 JavaScript 中使用模运算符得到否定结果?

JavaScript 中的 %(modulo)运算符给出两个数字相除的余数。 %(modulo)余数运算符之间存在差异。当对正数计算余数或 %(modulo) 时,两者的行为相似,但当使用负数时,两者的行为不同。
JavaScript %(modulo)的行为类似于余数运算并给出余数,由于数字为负数,因此余数也为负数。
让我们理解和比较%(模)和余数运算结果的清晰度。

模运算符示例:

For Positive Numbers:
Input: a = 21, b = 4
Output: 1
Explanation: 
modulo = 21 % 4
modulo = 21 - 4 * 5
modulo = 21 - 20 = 1 
Other Explanation:
The number 21 can be written in terms of 4 as
21 = 5 * 4 + 1
So, here '1' is the result.

For Negative Numbers:
Input: a = -23, b = 4
Output: 1
Explanation: 
modulo = -23 % 4
modulo = -23 + 4 * 6
modulo = -23 + 24 = 1
Other Explanation:
The number -23 can be written in terms of 4 as
-23 = (-6) * 4 + 1
So, here '1' is the result.

余数运算符示例:

Remainder operator uses the formula:
Remainder = a - (a / b) * b

Note: Result of (a / b) is first converted into Integer Value.

For Positive Numbers:
Input: a = 21, b = 4
Output: 1
Explanation: 
Remainder = 21 - (21 / 4) * 4 
Remainder = 21 - 5 * 4   
Remainder = 21 - 20 = 1

For Negative Numbers:
Input: a = -23, b = 4
Output: -3
Explanation: 
Remainder = -23 -( -23 / 4) * 4
Remainder = -23 -(-5) * 4
Remainder = -23 + 20 = -3

因此,从上面的比较中,很明显,余数和模运算都是不同的。 JavaScript %(modulo)运算符只不过是余数运算符,这就是为什么它在负数上给出负数的原因。

  • Number.prototype:原型构造函数允许向 JavaScript 数字添加新的属性和方法,以便所有数字都获得该属性并且可以默认访问方法。
    因此,我们将使用Number.prototype创建一个 mod函数,该函数将返回两个数字的模数。

    句法:

    Number.prototype.mod = function(a) {
        // Calculate
        return this % a;
    }
    

    下面的程序说明了 JavaScript 中的 %(modulo)运算符:

    示例 1:本示例使用模运算符(%) 进行运算。

                                                
    

    输出:

    The outcome is: 1
    

    示例 2:

                                    
    

    输出:

    The outcome is: -1
    

    因此,很清楚为什么 JavaScript %(modulo) 会给出否定的结果。

  • 在 JavaScript 中进行更改 %(modulo) 以用作 mod运算符:像实际模数一样执行模运算符(%) 而不是计算余数。我们将使用以下公式。
    假设数字是 a 和 b 然后计算mod = a % b

    句法:

    Number.prototype.mod = function(b) {
        // Calculate
        return ((this % b) + b) % b;
    }
    

    在上面的公式中,我们使用模属性(a + b) mod c = (a mod c + b mod c) mod c从余数计算模数。

    下面的程序说明了上述方法:

    例子:

                            
    

    输出:

    The outcome is: 3
    The outcome is: 2