你好,用java实现下面的函数的最好方法是什么?mod 11(x),它计算x mod 11,我们假设x是整数或公式。例如,mod 11(14)返回3,mod 11(3*7-30)返回2。我尝试了下面的方法,但它不起作用:`
public static int PositiveMod(int value, int mod)
{
return ((value % mod + mod) % mod);
}
public static double PositiveMod(double value, double mod)
{
return ((value % mod + mod) % mod);
}
'例如,我期望((-7+1)/20)mod 11给予3,但它给出了10.7,如下所示:i =((-7+1)/20)mod 11 = -6/9 mod 11 = 5*5 mod 11 = 3
3条答案
按热度按时间mctunoxg1#
我写了两个例子如何使用它的数学mod mathMod方法和默认mod faultModCalJava mod。他们将给予相同的结果为正数,但为负数,他们有不同的输出。更多信息在这里:
https://en.wikipedia.org/wiki/Modulo_operation的最大值
输出量:
rxztt3cl2#
您的问题令人困惑... %运算符已经是模数运算符,也称为余数...因此14% 11 = 3与mod 11(14)= 3相同。没有必要将其作为新函数来实现。
在你的等式中,((-7+1)/20)= -0.3,不清楚为什么你会期望3。
11 - 0.3等于10.7,所以这就是答案的来源。
o7jaxewo3#
%
不是模数运算符。它是余数运算符,其行为与余数运算符的行为相同。n = x mod(m)
的真mod函数表示存在k
,其中x - n = km
对于任何mod函数的剩余的完全集是无限的,并且对于上面的是
n = x - mk
,对于k
的任何整数值因此,对于上面的表达式,完整的残数集将是
n = 20 - 3k
。返回的任何值都将是一个合法的结果。余数函数只是前面提到的残数集的大小为one
的子集。话虽如此,这可能会有帮助。这个mod函数简单地校正到最小的正值,假设一个正的模数。
印刷品
这里有一个方法来创建mod函数,它只接受目标参数。
以上可能需要一些调整,要么是因为我误解了你的问题,要么是因为mod函数需要更复杂,以满足你的同余关系。