Math.abs(x) не работает должным образом для -2147483648, что дает исключение NumberFormat.JAVA

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

Сообщение Anonymous »

Я написал метод для изменения знака int. Если перевернутое число не находится в диапазоне INT_MAX и INT_MIN, оно вернет 0. Оно работает почти во всех случаях, кроме -2147483648.
Во время отладки я обнаружил, что код неправильно обрабатывает знак для -2147483648, пока его работает для входных данных с разными знаками.
Может кто-нибудь объяснить, почему Math.abs(x) не работает должным образом для этого тестового примера.
Метод приведен ниже.
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Math.abs(x) не работает должным образом для -2147483648, что дает исключение NumberFormat.
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Math.abs (x) не работает должным образом для специально -2147483648, что дает исключение номеров [дубликат]
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Временная сложность Math.min и Math.max
    Anonymous » » в форуме JAVA
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Почему math.cos(math.pi/2) не возвращает ноль?
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Math.sqrt (x) и Math.pow (x, 0,5) эквивалентны?
    Anonymous » » в форуме Javascript
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous

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