Я скомпилировал код, который ошибочно пытается добавить число и Double.NaN. Мне интересно, не бросает ли это исключение? Кто-нибудь знает, как обрабатывается эта ситуация?
Спасибо.На Java, что произойдет, если вы используете Double.NaN в операции?
6
A
ответ
6
Добавление числа в NaN дает NaN. Ожидается, что это не вызовет исключения. Я понимаю, что это соответствует IEEE 754.
0
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;
1
Чтобы ответить на вопрос Steve Б:
POSITIVE_INFINITY является крупнейшим Postive число, которое вы можете сохранить, если у вас есть неограниченное пространство для хранения. Без этой роскоши мы должны использовать конструкцию типа 1.0/0.0, которая отлично справляется с работой. То же самое касается NEGATIVE_INFINITY, но затем наибольшее отрицательное число.
NaN обычно определяется как 0.0/0.0, потому что нет такого числа, как 0/0, что отлично подходит для NaN.
По определению 0/0 = NaN. См. Http://en.wikipedia.org/wiki/NaN. – 2008-12-12 15:16:03