Что произойдет в Java, если вы используете Double.NaN в операции? - PullRequest
7 голосов
/ 12 декабря 2008

Я скомпилировал код, который по ошибке пытается добавить число и Double.NaN. Я задаюсь вопросом, бросает ли это исключение, которое не будет поймано? Кто-нибудь знает, как обрабатывается такая ситуация?
Благодаря.

Ответы [ 3 ]

7 голосов
/ 12 декабря 2008

Добавление числа к NaN дает NaN. Не ожидается, чтобы вызвать исключение. Я понимаю, что это соответствует IEEE 754.

1 голос
/ 12 декабря 2008

Чтобы ответить на вопрос Стива Б:

POSITIVE_INFINITY - это самый большой положительный номер, который вы можете сохранить, если у вас есть неограниченное пространство для хранения. Без этой роскоши мы должны использовать такую ​​конструкцию, как 1.0 / 0.0, которая отлично работает. То же самое относится и к NEGATIVE_INFINITY, но затем к наибольшему отрицательному числу.

NaN обычно определяется как 0.0 / 0.0, потому что нет такого числа, как 0/0, так что оно идеально подходит для NaN.

0 голосов
/ 12 декабря 2008
public static void main(String args[])
{
    Double d = Double.NaN + 1.0;
    System.out.println(d);
}

печатает Double.Nan. Кто-нибудь может объяснить исходную реализацию?

  public static final double POSITIVE_INFINITY = 1.0 / 0.0;
  public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
  public static final double NaN = 0.0d / 0.0;
...