Я пытаюсь найти целую середину между двумя целыми числами. Например, середина (2,3) будет равна 2, а не 2,5. У меня было нижеследующее, которое отлично работает, но я хотел бы работать с числами от MIN_VALUE до MAX_VALUE, и это приводит к переполнению, так что абсолютно неверные результаты.Java, находящий среднюю точку между двумя целыми числами
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, однако неверно, если х является отрицательным числом, и я» m unsure, почему это?
Он также не работает, если 'x + y> MAX_VALUE'. – molbdnilo
Сделайте это с 'double', а затем конвертируйте обратно в int? Продвигайте 'int' '' '' '' '' '' '' ''' '' '' '' '' '' '' '' '' '' – markspace
Невозможно воспроизвести неправильное поведение по отрицательному целому числу. Единственное, что я мог проверить, это то, что на этот код влияют проблемы с переполнением. – Paul