我试图找到两个整数之间的整数中点。例如 mid(2,3) 将是 2,而不是 2.5。我有下面的工作正常,但我想使用从 MIN_VALUE 到 MAX_VALUE 的数字,这样做会导致溢出,因此结果完全不正确。
public static int mid(int x, int y){
int midpoint = (x+y)/2;
return midpoint;
}
我现在有:
public static int mid(int x, int y){
int low = Math.min(x, y);
int high = Math.max(x, y);
int midpoint = (low + high) >>> 1;
return midpoint;
}
这似乎适用于从 0 到 Integer.MAX_VALUE 的 x 和 y 值,但是如果 x 是负数则不正确,我不确定为什么会这样?
最佳答案
这个怎么样?
public static int mid(int x, int y) {
return x/2 + y/2 + (x%2 + y%2)/2;
}
关于Java 求两个整数的中点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842763/