Перейти к содержимому

Что такое nan в си

  • автор:

Русские Блоги

При обработке и вводе и обработке данных очень вероятно возникновение чтения данных в нулевых значениях (максимальных и минимальных), знаменатель операции равен 0 или 0,0, а операция взятия логарифма 0 будет генерировать nan или inf. Этот пост предназначен для анализа работы C / C ++ для генерации nan и inf и определения того, генерируются ли nan или inf.

Причины НАН

nan: не число, что означает «недопустимое число».

  1. Возведите в квадрат отрицательные числа, например: −1.0 −−−− √ − 1.0;
  2. Найти логарифм отрицательных чисел, например: log (−1.0) log⁡ (−1.0);
  3. 0.00.00.00.0;
  4. 0.0*inf;
  5. infinfinfinf;
  6. Инф-инф за эти операции получит нан.
    (0000 сгенерирует исключение операции; 0.00.00.00.0 не сгенерирует исключение операции, но получит nan);

Примечание: nan неупорядочен и не может быть логически обработан. Это не больше, меньше или равно любому числу (включая себя), , = воздействуют на nan, чтобы вызвать исключение. Когда вы получите nan, проверьте, есть ли недопустимая операция. Если выражение содержит nan, то результатом выражения будет nan.

Причины INF

INF: бесконечный, что означает «бесконечность».
Превышен диапазон представления чисел с плавающей запятой (переполнение, то есть часть кода заказа превышает максимально допустимое значение).

  1. 1.00.01.00.0 равно inf;
  2. −1.00.0−1.00.0 невероятно похож на -inf;
  3. 0.0+inf=inf;
  4. log(0);

Примечание: + inf больше любого числа (кроме себя и nan), -inf меньше любого числа (кроме себя и nan), когда вы получаете inf, проверьте, есть ли переполнение или разделите на 0. Inf в выражении языка C означает понятие бесконечности в математике, например 1,0 / inf равно 0,0, и его можно сравнить с другими числами с плавающей запятой (вы можете участвовать в таких операциях, как +, == ,! = и т. Д.)

Суждение нана и инф

Следующие макросы включены в заголовочный файл math.h и могут использоваться для определения того, является ли результат выражения inf, nan или другим. При использовании include include include .

int isfinite(x); int isnormal(x); int isnan(x); int isinf(x);

Откройте math.h, чтобы увидеть определение:

#define isnormal(x) \ ( sizeof(x) == sizeof(float) ? __inline_isnormalf((float)(x)) \ : sizeof(x) == sizeof(double) ? __inline_isnormald((double)(x)) \ : __inline_isnormall((long double)(x))) #define isfinite(x) \ ( sizeof(x) == sizeof(float) ? __inline_isfinitef((float)(x)) \ : sizeof(x) == sizeof(double) ? __inline_isfinited((double)(x)) \ : __inline_isfinitel((long double)(x))) #define isinf(x) \ ( sizeof(x) == sizeof(float) ? __inline_isinff((float)(x)) \ : sizeof(x) == sizeof(double) ? __inline_isinfd((double)(x)) \ : __inline_isinfl((long double)(x))) #define isnan(x) \ ( sizeof(x) == sizeof(float) ? __inline_isnanf((float)(x)) \ : sizeof(x) == sizeof(double) ? __inline_isnand((double)(x)) \ : __inline_isnanl((long double)(x)))

Способ использования и результаты:

  1. int isfinite (x), чтобы определить, ограничен ли x, он возвращает 1, другой возвращает 0;
  2. int isnormal (x), чтобы определить, является ли x числом (не inf или nan), он возвращает 1, другие возвращают 0;
  3. int isnan (x), nan возвращает 1, когда x, остальные возвращают 0;
  4. int isinf (x), возвращает 1, когда x — положительная бесконечность, возвращает -1, когда x — отрицательная бесконечность, и возвращает 0 для других. Некоторые компиляторы не различают.

тест

Генерация операций Nan или Inf, используйте библиотечные функции (макро), чтобы судить

#include #include using namespace std; int main(int argc, char *argv[]) < //nan cout

--------------------- Автор: Лу свинья не плохо Источник: CSDN Оригинал: https: //blog.csdn.net/wokaowokaowokao12345/article/details/72846436 ? utm_source = copy Заявление об авторском праве: Эта статья является оригинальной статьей блоггера. При перепечатке прикрепите ссылку на сообщение в блоге!

Интеллектуальная рекомендация

Волшебное использование союза в языке Си / Си ++

Основная концепция союза В языке C / C ++ иногда необходимо хранить различные типы переменных в одном и том же блоке памяти, например помещать целочисленную переменную int, символьную переменную char .

Метод Matlab для удаления INF или NAN

INF обозначает «бесконечность» и является аббревиатурой бесконечного. NAN означает «недопустимый номер» и является сокращением «Не число». Примечание: вывод data11 .

Использование случайных функций в языке Си

rand () и srand () должны быть первыми случайными функциями, с которыми сталкиваются новички. Сегодня блоггеры заявляют о своем понимании этих двух функций. Характеристики использования этих двух функ.

Сводка статического использования языка Си

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

Необычное, но практическое использование на языке Си

Необычное, но практическое использование на языке Си "##" дефис пример: Анализ: «##» в приведенном выше определении макроса - это соединитель, который используется для соединения.

NaN в C ++ - что это такое и как это проверить?

Что такое NaN?
NaN, аббревиатура от «Not a Number», является исключением, которое обычно возникает в тех случаях, когда выражение приводит к числу, которое невозможно представить. Например, квадратный корень из отрицательных чисел.

// C++ code to demonstrate NaN exception #include // for sqrt() using namespace std; float a = 2, b = -2; // Prints the number (1.41421) cout << sqrt (a) << endl; // Prints "nan" exception // sqrt(-2) is complex number cout << sqrt (b) << endl;
1,41421 -нан

Как проверить NaN?

Метод 1. Использование оператора сравнения («==»).
В этом методе мы проверяем, является ли число сложным, сравнивая его с самим собой. Если результат верен, то число не комплексное, то есть действительное. Но если результат ложный, то возвращается «нан», т.е. число комплексное.

// C++ code to check for NaN exception
// using «==» operator
#include // for sqrt()
using namespace std;
float a = sqrt (2);
float b = sqrt (-2);
// Returns true, a is real number
// prints «Its a real number»
a==a? cout << "Its a real number" << endl: cout << "Its NaN" << endl; // Returns false, b is complex number // prints "Its nan" b==b? cout << "Its a real number" << endl: cout << "Its NaN" << endl;

Its a real number Its NaN


Метод 2: Использование встроенной функции isnan ().

Другой способ проверить NaN — использовать функцию «isnan ()», эта функция возвращает истину, если число сложное, иначе она возвращает ложь.

// C++ code to check for NaN exception
// using «isnan()»
#include // for sqrt() and isnan()
using namespace std;
float a = sqrt (2);
float b = sqrt (-2);
// Returns false as a
// is real number
isnan(a)? cout << "Its NaN" << endl: cout << "Its a real number" << endl; // Returns true as b is NaN isnan(b)? cout << "Its NaN" << endl: cout << "Its a real number" << endl;

Это реальное число Его NaN

Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

си после расчета функции на вывод я получаю значение -nan [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

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

Закрыт 1 год назад .

при программировани на си столкнулся с проблеммой, есть простая программа, при определенных значениях b в переменную l присваивается значение -nan, как можно в дальнейшем проверить что в l находится значение -nan например через if

#include #include int main()

Почему выводит NaN?

https://codepen.io/vladimir2021794/pen/jOYvJEP
Если выбрать марку, но не написать количество, выводит NaN. Я не понимаю, почему так происходит. Помогите, пожалуйста, это решить.

  • Вопрос задан более года назад
  • 597 просмотров

1 комментарий

Простой 1 комментарий

Seasle

Александр @Seasle Куратор тега JavaScript
parseInt(») // NaN
Решения вопроса 1

delphinpro

Сергей delphinpro @delphinpro Куратор тега JavaScript
frontend developer

Возвращаемое значение
Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ не получилось сконвертировать в число, то возвращается NaN.

Делаем вывод: Если в вашем инпуте нет значения, которое можно преобразовать в число, получится NaN. Именно это происходит, если «не написать количество» – пустая строка не может быть конвертирована в число.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *