C#: NaN и IsNaN


Некоторые математические операции дают результаты, которые не являются действительными числами. Ответы могут быть мнимыми числами или неопределенными значениями, любое из которых не могут быть представлены в число с плавающей точкой (в математике используется запятая, здесь я придерживаюсь понятий программирования). В этих случаях результирующее значение будет NaN.

"Не Число"

C # и .NET framework не обеспечивают способ представления некоторых числовых значений. Например, не существует стандартного способа для хранения переменной в виде мнимого или комплексного чисел. Некоторыми из математических методов математического класса библиотеки можно вычислить такие значения или возвращать такие значения, которые не являются действительными числами. Вместо этого, выбрасывая исключение в этих случаях функции возвращают специальное значение с именем NaN, которое является сокращением от "не число".

Значение NaN можно получить из постоянного поля на float или Double структур. Это поле является статическим членом структуры. Оно не может быть использовано в целях сравнения, два значения NaN могут быть логически разными, поэтому тесты на равенство всегда возвращают false.

Следующий пример генерирует результат NaN, пытаясь получить квадратный корень из отрицательного числа. Затем идет сравнение с константой. Обратите внимание, что сравнение будет неуспешным.

double nanPr = Math.Sqrt(-4);
Console.WriteLine(nanPr);                 // На выходе: "NaN"
Console.WriteLine(nanPr == double.NaN);   // На выходе: "False"
Проверка на NaN

Хотя стандартные операторы сравнения не позволяют проверить, является значение числом или нет, все же есть способ: float и double. Метод IsNaN возвращает логическое значение, указывающее, является параметр числом или нет.

double nanPr = Math.Sqrt(-4);
Console.WriteLine(double.IsNaN(nanPr));   //На выходе: "True"
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, си шарп, NaN




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Ошибки 500 (internal server error) и 550 (permission denied)
Конвейеризация и постоянные соединения
Непрямоугольная форма на C#