Что происходит в Java, если вы используете Double.NaN в операции?

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

12.12.2008 14:49:17
3 ОТВЕТА

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

7
12.12.2008 14:52:08
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;
0
12.12.2008 14:55:42
Эх, не видел, чтобы ответ Gamecat имел в виду этот.
Michael Myers♦ 12.12.2008 15:17:15

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

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

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

1
12.12.2008 15:09:24