Идея состоит в том, чтобы представлять специальные числа, которые могут естественным образом возникать в результате операций с «нормальными» числами. Вы можете видеть бесконечность (как положительную, так и отрицательную) как «переполнение» представления с плавающей запятой, идея состоит в том, что по крайней мере в некоторых условиях получение такого значения, возвращаемого функцией, все еще дает значимый результат. Например, они по-прежнему имеют некоторые свойства упорядочения (поэтому они не будут выполнять операции сортировки с помощью винтов).
Nan очень специфичен: если x - это Nan, x == x - ложь (на самом деле это один из способов проверить для nan, по крайней мере, в C, снова). Это может быть довольно запутанным, если вы не привыкли к особенностям с плавающей запятой. Если вы не будете делать научные вычисления, я бы сказал, что возвращение Nan с помощью операции - это ошибка, по крайней мере, в большинстве случаев, которые приходят на ум. Нэн может прийти на различные операции: 0/0, инф - инф, инф / инф, 0 * инф. У Нана тоже нет порядка размещения.