Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Желательно без использования С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2011, 20:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка на NaN (С/С++) (C++):

Проверка double на NaN и Infinity - C++
Как лучше проверить дабл на нотенамбер или бесконечность?

Как вернуть NaN и Infinity, проверить на NaN и Infinity? - C++
Как вернуть NaN и Infinity, проверить на NaN и Infinity?

nan - C++
подскажите что это означает ввожу данные на выходе "nan" работаю только с double, long int

Что такое nan? - C++
Собственно вопрос: что такое nan? Допустим v=2 #include<iostream> #include<cmath> using namespace std; int main() { ...

LU - разложение (выдает NaN) - C++
Здравствуйте. Помогите исправить программу. Проблема заключается в том, что некоторые значение получаются NaN/ #include<iostream.h> ...

max [NaN, число] vs max [число, NaN] - C++
объясните пожалуйста, в чем прикол? double a = numeric_limits<double>::quiet_NaN(); double b = 1.0; double c = max(b, a); // с =...

4
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,199
Завершенные тесты: 1
26.03.2011, 22:38 #2
В C99 в math.h есть isnan(x).
А так, не знаю, насколько это правильно и переносимо, но для бытовых нужд работает: NaN не равен сам себе, поэтому просто x != x.
2
'HelloWorld'
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 31
26.03.2011, 23:28  [ТС] #3
Спасибо за ответ) Проблему решил использованием маски и побитового сравнения
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 13:18 #4
Цитата Сообщение от Somebody Посмотреть сообщение
NaN не равен сам себе, поэтому просто x != x.
Если и бесконечность имеет это свойство, то
C++
1
2
3
4
5
6
7
8
if (x==x)
{
 /*Здесь уж точно число*/
}
esle
{
 /*Фиг его знает, то ли NaN, то ли Infinity*/
}
.
0
Evg
Эксперт CАвтор FAQ
18251 / 6376 / 438
Регистрация: 30.03.2009
Сообщений: 17,652
Записей в блоге: 28
30.03.2011, 15:23 #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/libc/include/fpmath.h
1
30.03.2011, 15:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2011, 15:23
Привет! Вот еще темы с ответами:

Nan после вычисления - C++
после вычисления значения выдает число, nan, число. как можно округлить до того значения, чтобы выдавался корректный ответ? + после...

Вывод nan при расчете - C++
При расчете codeblocks выводит nan как сделать так, чтобы он считал это ошибкой? #include <iostream> #include <math.h> using...

Как отловить +/-INF и NAN? - C++
Здравствуйте. Проблема в возникновении в ходе вычислений указанных в заголовке значений. Причем трагизм ситуации в том, что после начала...

При вычисление выдает nan - C++
Здравствуйте, дорогие форумчане. Небольшая программка для вычисления полупериметра треугольника и т.д., реализованная через классы. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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