Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.83
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
#1

Проверка на NaN (С/С++) - C++

26.03.2011, 20:53. Просмотров 6890. Ответов 4
Метки нет (Все метки)

Подскажите, пожалуйста, как проверить является ли вещественное число NaN'ом?

Как вариант сделать побитовое умножение на маску... Но тогда первый бит (знак) теряется.. Что делать?

Желательно без использования С++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2011, 20:53     Проверка на NaN (С/С++)
Посмотрите здесь:

Даны натуральное число n, действительные числа a1,...,an. Получить: max (-a1,a2,-a3,...,(-1)nan) C++
nan C++
LU - разложение (выдает NaN) C++
При вычисление выдает nan C++
C++ max [NaN, число] vs max [число, NaN]
C++ Что такое nan?
C++ Проверка double на NaN и Infinity
Как присвоить переменной Double значение NaN? C++
Вывод nan при расчете C++
При изменении значения переменной получается nan C++
C++ Интегрирования трапециями. Ошибка -nan(ind)
C++ Nan после вычисления

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
26.03.2011, 22:38     Проверка на NaN (С/С++) #2
В C99 в math.h есть isnan(x).
А так, не знаю, насколько это правильно и переносимо, но для бытовых нужд работает: NaN не равен сам себе, поэтому просто x != x.
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
26.03.2011, 23:28  [ТС]     Проверка на NaN (С/С++) #3
Спасибо за ответ) Проблему решил использованием маски и побитового сравнения
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 13:18     Проверка на NaN (С/С++) #4
Цитата Сообщение от Somebody Посмотреть сообщение
NaN не равен сам себе, поэтому просто x != x.
Если и бесконечность имеет это свойство, то
C++
1
2
3
4
5
6
7
8
if (x==x)
{
 /*Здесь уж точно число*/
}
esle
{
 /*Фиг его знает, то ли NaN, то ли Infinity*/
}
.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,759
Записей в блоге: 26
30.03.2011, 15:23     Проверка на NaN (С/С++) #5
Вот тут есть ссылки
Как вернуть NaN и Infinity, проверить на NaN и Infinity?

Цитата Сообщение от 'HelloWorld' Посмотреть сообщение
Проблему решил использованием маски и побитового сравнения
Для того и вводятся интерфейсы, чтобы не корячиться с масками. NaN'ы бывают тихие и громкие. И вроде бы как множество способов записи NaN'а. Другое дело, что не везде интерфейсы поддержаны

Вот один из вариантов библиотечного isnan'а (в предположении, что плавающие числа представлены в стандарте ieee-754)
http://fxr.googlebit.com/source/lib/libc/gen/isnan.c
union описан здесь
http://fxr.googlebit.com/source/lib/...clude/fpmath.h
Yandex
Объявления
30.03.2011, 15:23     Проверка на NaN (С/С++)
Ответ Создать тему
Опции темы

Текущее время: 12:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru