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

— Логічно. Дякую, Ріша.