它是怎么来的,在java中的模运算符是不同的,然后wolfram阿尔法?模运算符没有给出正确的结果
我的公式是:
var = (var-x) % 10
所以钨给我,例如
(0 - 1) % 10 = 9
正确结果的Java给人-1。
我该如何解决这个最好的方法?
它是怎么来的,在java中的模运算符是不同的,然后wolfram阿尔法?模运算符没有给出正确的结果
我的公式是:
var = (var-x) % 10
所以钨给我,例如
(0 - 1) % 10 = 9
正确结果的Java给人-1。
我该如何解决这个最好的方法?
那怎么%
定义是应该工作在大多数编程语言中,即使相反有时会有用。
我建议实现自己的模方法:
int positiveModulo(a, b) {
int result = a % b;
if (result < 0) { result += b; }
return result;
}
谢谢。解决了这个问题。 – user1480139
这应该做的伎俩:
class ModTest {
public static void main (String[] args) {
int x = -1;
int m = 10;
int y = mod(x, m);
System.out.println(y);
}
static int mod(int x, int m) {
return (x % m + m) % m;
}
}
更新........ –
从javaDocs:“从这个规则,其余操作的结果可以为负只有当股息为负如下,可只有当分红是正数时才是正数,而且结果的数量总是小于除数的数量。“
-1 mod 10是-1。 – Dave
-1 mod 10 = -1和-1 mod 10 = 9都是正确的 –
@Dave它取决于根据https://en.wikipedia.org/wiki/Modulo_operation的编程语言。 – MeNa