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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 65, средняя оценка - 4.88
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

30.03.2011, 08:08. Просмотров 9002. Ответов 40
Метки нет (Все метки)

Как вернуть NaN и Infinity, проверить на NaN и Infinity?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2011, 08:08     Как вернуть NaN и Infinity, проверить на NaN и Infinity?
Посмотрите здесь:
C++ Проверка double на NaN и Infinity
C++ infinity размер
Как отловить +/-INF и NAN? C++
Как присвоить переменной Double значение NaN? C++
nan C++
C++ Проверка на NaN (С/С++)
LU - разложение (выдает NaN) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 08:25     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #2
taras atavin, с помощью numeric_limits.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 08:27  [ТС]     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #3
А при чём здесь int?
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 08:57     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #4
Цитата Сообщение от taras atavin Посмотреть сообщение
А при чём здесь int?
Я что-то сказал про int?
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
30.03.2011, 10:34     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #5
_isnan и _finite как вариант
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 10:55  [ТС]     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #6
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Я что-то сказал про int?
А о каком здесь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// numeric_limits example
#include <iostream>
#include <limits>
using namespace std;
int main () {
  cout << boolalpha;
  cout << "Minimum value for int: " << numeric_limits<int>::min() << endl;
  cout << "Maximum value for int: " << numeric_limits<int>::max() << endl;
  cout << "int is signed: " << numeric_limits<int>::is_signed << endl;
  cout << "Non-sign bits in int: " << numeric_limits<int>::digits << endl;
  cout << "int has infinity: " << numeric_limits<int>::has_infinity << endl;
  return 0;
 }
типе?

Добавлено через 1 минуту
Цитата Сообщение от Vladimir. Посмотреть сообщение
_isnan и _finite как вариант
Это проверка?

Добавлено через 50 секунд
А как вернуть такие значения?
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 11:05     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #7
Цитата Сообщение от taras atavin Посмотреть сообщение
типе?
taras atavin, в аргументе шаблона задайте нужный Вам тип.
Цитата Сообщение от taras atavin Посмотреть сообщение
А как вернуть такие значения?
taras atavin, Вы хоть пробовали почитать описание numeric_limits?
C++
1
2
double doubleNaN = std::numeric_limits<double>::quiet_NaN();
int intInfinity = std::numeric_limits<int>::infinity();
Vladimir., эти функции специфичны для MS.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 11:44  [ТС]     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #8
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Vladimir., эти функции специфичны для MS.
А мне надо универсально.

Добавлено через 1 минуту
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
taras atavin, Вы хоть пробовали почитать описание numeric_limits?
Пробовал, но понял только, что с помощью этого прибамбаса можно проверить, поддерживает ли тип int код Infinity и убедиться в обратном.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 11:51     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #9
taras atavin, я сейчас матерится начну.

ЧИТАТЬ ВНИМАТЕЛЬНО:
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
C++
1
2
double doubleNaN = std::numeric_limits<double>::quiet_NaN();
int intInfinity = std::numeric_limits<int>::infinity();
Цитата Сообщение от cplusplus.com
infinity() - Representation of positive infinity, if available.
quiet_NaN() - Representation of quiet (non-signaling) "Not-a-Number", if available.
signaling_NaN() - Representation of signaling "Not-a-Number", if available.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 13:09  [ТС]     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #10
А почему бесконечность то интовая? Может
C++
1
2
double doubleNaN = std::numeric_limits<double>::quiet_NaN();
double intInfinity = std::numeric_limits<double>::infinity();
?

Добавлено через 14 минут
И проверку как сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
typedef double (*dp)(double);
double d(dp f, double x, double dx)
{
 double result, d,oldresult;
 for (result=std::numeric_limits<double>::quiet_NaN(), d=1.0; d!=0.0; dx/=2)
 {
  if (...)
  {
   return std::numeric_limits<double>::quiet_NaN();
  }
  if (...)
  {
   return std::numeric_limits<double>::infinity();
  }
  oldresult=result;
  result=(f(x+dx)-f(x-dx))/(2*dx);
  if (/*Как написать условие oldresult!=NaN?*/)
  {
   d=oldresult-result;
  }
  else
  {
   d=1.0;
  }
 }
 return result;
}
. Дальше, вернула эта функция std::numeric_limits<double>::quiet_NaN(), или std::numeric_limits<double>::infinity(), как написать условия для отлова в ифах этих значений?
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 13:10     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #11
taras atavin, дошло, наконец? Вы пробуйте в следующий раз читать то, что Вам пишут и изучить информацию в которую Вас тыкают носом.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 13:12  [ТС]     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #12
Как вернуть, я понял. А как проверить?

Добавлено через 56 секунд
Неужели
C++
1
2
3
4
if (y==std::numeric_limits<double>::quiet_NaN())
{
 ...
}
?
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 13:17     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #13
Цитата Сообщение от taras atavin Посмотреть сообщение
Неужели
Не угадали. Числа с плавающий точкой так не сравниваются, нужно учитывать погрешность.

Подсказка: гугл знает ответ.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.03.2011, 13:22  [ТС]     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #14
NaN с погрешностью? Ну и ну!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2011, 13:55     Как вернуть NaN и Infinity, проверить на NaN и Infinity?
Еще ссылки по теме:
C++ Что такое nan?
C++ Nan после вычисления
C++ max [NaN, число] vs max [число, NaN]
При вычисление выдает nan C++
Вывод nan при расчете C++

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 13:55     Как вернуть NaN и Infinity, проверить на NaN и Infinity? #15
Цитата Сообщение от taras atavin Посмотреть сообщение
NaN с погрешностью?
Я что-то сказал про сравнение c NaN?

Ладно... Раз Вам религия не позволяет вбить в гугле "NaN" и посмотреть первую же ссылку, то вот Вам цитата с Википедии:
Цитата Сообщение от ru.wikipedia.org
NaN не равен ни одному другому значению (даже самому себе[2]); соответственно, самый простой метод проверки результата на NaN — это сравнение полученной величины с самой собой.
Yandex
Объявления
30.03.2011, 13:55     Как вернуть NaN и Infinity, проверить на NaN и Infinity?
Ответ Создать тему
Опции темы

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