NaN

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

NaN (англ. Not-a-Number) — одно из особых состояний числа с плавающей запятой. В соответствии с IEEE 754, такое состояние задаётся через установку показателя степени в зарезервированное значение. Используется во многих математических библиотеках и математических сопроцессорах. Данное состояние может возникнуть в различных случаях, например, когда предыдущая математическая операция завершилась с неопределённым результатом, или если в ячейку памяти попало не удовлетворяющее условиям число.

К операциям, приводящим к появлению NaN в качестве ответа, относятся:

  • все математические операции, содержащие NaN в качестве одного из операндов;
  • деление ноля на ноль;
  • деление бесконечности на бесконечность;
  • умножение ноля на бесконечность;
  • сложение бесконечности с бесконечностью противоположного знака;
  • вычисление квадратного корня отрицательного числа[1];
  • логарифмирование отрицательного числа.

Свойства[править | править исходный текст]

  • NaN не равен ни одному другому значению (даже самому себе[2]); соответственно, самый простой метод проверки результата на NaN — это сравнение полученной величины с самой собой.
  • Любая нетривиальная операция, принимающая NaN как аргумент, всегда возвращает NaN вне зависимости от значения других аргументов. Единственными исключениями из этого правила являются функции max и min, которые возвращают значение «второго» аргумента (отличного от NaN).
  • Тривиальные операции, являющиеся тождеством, обрабатываются особо: так, например, 1NaN равно 1.

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

  1. в случае, если библиотека, выполняющая эту операцию, не поддерживает либо не настроена на использование комплексных чисел
  2. поскольку операции сравнения проходят через библиотечные функции, которые обычно проверяют состояние числа с плавающей запятой

Ссылки[править | править исходный текст]