NaN, Infinity - 1

— Привет, Амиго!

Сегодня я расскажу тебе еще про несколько интересных вещей в Java.

Бесконечность.

В Java тип double имеет специальные значения для понятий «плюс бесконечность» и «минус бесконечность». Положительное число, разделенное на 0.0, дает «плюс бесконечность», а отрицательное – «минус бесконечность».

Этим понятиям соответствуют специальные константы типа Double:

Код Описание
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
плюс бесконечность
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
минус бесконечность

— И что, это действительно работает?

— Да. Смотри:

Код
double inf = Double.POSITIVE_INFINITY;
System.out.println(inf); // Бесконечность
System.out.println(inf + 1); //Бесконечность+1 ==Бесконечность
System.out.println(inf + 10); //Бесконечность+10 ==Бесконечность
System.out.println(inf * -1); //равно «минус бесконечность»
Double.NEGATIVE_INFINITY
Вывод на экран:
Infinity
Infinity
Infinity
-Infinity

— Действительно работает. А если у нас получается неопределенность? Например, если мы из бесконечность вычитаем бесконечность?

— Для этого в Java есть еще одно понятие – NaN – Not-a-Number (не число).

Его используют в различных ситуациях:

1) Строку конвертируем в число, а в ней есть буквы. Ответ – NaN

2) Бесконечность минус бесконечность. Ответ — NaN

3) Многие другие ситуации, где в ответе ждут число, а получается неизвестно что.

— А какие операции можно производить с Infinity и NaN?

— С NaN все очень просто. Любая операция, где есть NaN, дает в результате NaN.

А с бесконечностью можно и поработать:

Выражение Результат
n ÷ ±Infinity
0
±Infinity × ±Infinity
±Infinity
±(не ноль) ÷ 0
±Infinity
Infinity + Infinity
Infinity
±0 ÷ ±0
NaN
Infinity - Infinity
NaN
±Infinity ÷ ±Infinity
NaN
±Infinity × 0
NaN

— Логично. Спасибо, Риша.