Обработка NaN и Infinite при вычислении в Java

158
01 марта 2018, 12:44

Есть метод для возведения числа в степень.

public static double raisedToPower(double a, double b) {
    return Math.pow(a, b);
}

В результате вычисления метод может возвратить значения NaN и Infinity, что в свою очередь может поломать программу в точке вызова.

В моем понимании я должен обработать это внутри метода (Если NaN или Infinity, то возвратить ключ, который можно обработать вне метода). Вот в чём вопрос, что можно возвратить в качестве ключа или есть другой способ обработать данную ситуацию?

public static double raisedToPower(double a, double b) {
    double res = Math.pow(a, b);
    if (Double.isNaN(res) || Double.isInfinite(res)) {
        return key;
    }
    return res;
}
Answer 1

В целом вы идею поняли верно, но интерпретировали неправильно.

NaN и Infitity - это уже и есть такой "ключ"

Answer 2

Рекомендую вызвать исключение и ловить его во вне:

if(Double.isNaN(res)){
  throw(new Exception("NAN"));
}
else if(Double.isInfinite(res)){
  throw(new Exception("INFINITE"));
}

Далее, в месте использования метода просто пишем обработчик исключения через try, catch, finally.

READ ALSO
Правильно распарсить файл

Правильно распарсить файл

Есть такая программа, которая парсит файл и вытаскивает из нее нужные данные (Вопрос, ответы и категории) и полученные данные выгружает в ExcelНо...

207
Ошибка AudioRecord и запись потока в файл в Android

Ошибка AudioRecord и запись потока в файл в Android

При нажатии кнопки StartRead вылетает с ошибкойВ чем проблема? И еще вопрос, как эти данные из потока записать в музыкальный файл?

165
Вызов glCallList в list compile

Вызов glCallList в list compile

Можно ли вызывать прорисовку скомпилиного листа glCallList между glNewList(list, GL_COMPILE) и glEndList()? Не будет ли ошибка?

170
Динамическое добавление и обработка на js jqeury

Динамическое добавление и обработка на js jqeury

есть обычный див на нём есть спан на который при нажатии добавляется точно такой же блок клик и добавление блока идёт динамически через $('body')on('click','

159