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

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

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

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

26.03.2011, 20:53. Просмотров 7261. Ответов 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
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 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
Ушёл с форума.
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
17398 / 5636 / 352
Регистрация: 30.03.2009
Сообщений: 15,422
Записей в блоге: 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 (С/С++)
Ответ Создать тему
Опции темы

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