当我在我的Java程序中使用%运算符时,我总是得到负数的答案。例如:-1%100的结果为-1。虽然这在数学上是正确的,但我想得到正常的数学解,即99。换句话说,我想得到最小的正整数解。在Java中是否有任何简单的解决方案(也许是我在Math中忽略了什么?--我找不到)?
我还想澄清一点,如果API中有做到这一点的内容,那么提供链接将是很棒的。
我还想澄清一点,如果API中有做到这一点的内容,那么提供链接将是很棒的。
int d = 100;
int x = -1 % d;
if (x < 0)
x += d;
d
。int myMod(int x, int modulo)
{
return ((x % modulo) + modulo) % modulo
}
这个代码可以适用于任何d或x的值。
int d=100;
int x=-1%d;
while (x<0)
x+=d;
i < 0 ? n - ((-i - 1) % n + 1) : i % n
例如:
class Mod {
public static int mod(int i, int n) {
return i < 0 ? n - ((-i - 1) % n + 1) : i % n;
}
public static void main(String [] args) {
System.out.println("mod(-201, 100) == " + mod(-201, 100));
System.out.println("mod(-200, 100) == " + mod(-200, 100));
System.out.println("mod(17, 100) == " + mod(17, 100));
System.out.println("mod(100, 100) == " + mod(100, 100));
}
}
而且
$ javac Mod.java && java Mod
mod(-201, 100) == 99
mod(-200, 100) == 0
mod(17, 100) == 17
mod(100, 100) == 0
不要使用循环。