Math.abs (x) не работает должным образом для специально -2147483648, что дает исключение номеров [дубликат]JAVA

Программисты JAVA общаются здесь
Anonymous
Math.abs (x) не работает должным образом для специально -2147483648, что дает исключение номеров [дубликат]

Сообщение Anonymous »

Я написал метод, чтобы отменить подписанный int. Если реверсированный номер не находится в диапазоне Int_max и Int_min, он вернется 0. Он работает почти для всех случаев, за исключением -2147483648
, когда отладки я обнаружил, что код не обрабатывает знак правильно для -2147483648, в то время как его работа для различных подписанных. этот метод Testcase.
приведен ниже. < /p>
public int reverse(int x) {
boolean flag = (x>0);
x = Math.abs(x);

String num = new StringBuilder(Integer.toString(x)).reverse().toString();

long temp = Long.parseLong(num);

if(!flag){
temp = -temp;
}

if((Integer.MAX_VALUE < temp) || ( temp < Integer.MIN_VALUE)){
return 0;
}

return (int) temp;
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-numberf

Вернуться в «JAVA»