Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/154: Рейтинг темы: голосов - 154, средняя оценка - 4.60
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

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

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

Студворк — интернет-сервис помощи студентам
Как вернуть NaN и Infinity, проверить на NaN и Infinity?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2011, 08:08
Ответы с готовыми решениями:

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

Как определить NAN INFINITY HUGE_VAL?
пробую собрать libxml2-2.9.8 старым компилятором (cl v 13.10.4035 for 80x86 из DDK) там в xpath.c такие строки #ifndef NAN #define...

Null,undefined,Nan,infinity
Всем привет! У меня 2 вопроса: 1)Перечисленные в заголовке значения яв-ся ли типами данных 2)В чем разница между undefined и null ...

40
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.07.2015, 12:01
Студворк — интернет-сервис помощи студентам
taras atavin,
http://en.cppreference.com/w/c... fpclassify
В секции See Also тоже посмотри.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 12:09  [ТС]
const char* show_classification(double x)
И что я потом с этим указателем на char буду делать? Ещё функцию, возвращающую сэмпл с голосовым сообщением предложите.

Добавлено через 1 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
В секции See Also тоже посмотри.
C:\Projects\Test10\Test10\Test.cpp|7|err or: 'isfinite' is not a member of 'std'|
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.07.2015, 12:13
Цитата Сообщение от taras atavin Посмотреть сообщение
И что я потом с этим указателем на char буду делать? Ещё функцию, возвращающую сэмпл с голосовым сообщением предложите.
Алё, функция это fpclassify, а show_classification это иллюстративный пример ее применения. Уж простите, но если такое не доходит, пора на пенсию и внуков няньчить.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
C:\Projects\Test10\Test10\Test.cpp|7|err or: 'isfinite' is not a member of 'std'|
Должен быть включен хедер cmath и поддержка С++11.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 12:16  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
Уж простите, но если такое не доходит, пора на пенсию и внуков няньчить.
Может если доходит? Потому что ничего он не иллюстрирует.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:06
Цитата Сообщение от taras atavin Посмотреть сообщение
можно сравнивать?
Сравнивать что? Их же, - нельзя. То есть вообще можно всё, но результат будет нелогичный. Вещь сама себе неравна может быть? Легко.
taras atavin, ведь в примере показано как пошагово определить NAN, далее бесконечность и её знак. Чего же ещё желать? У Вас задача определить или понять, что можно сравнивать?
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:08  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
taras atavin, ведь в примере показано как пошагово определить NAN, далее бесконечность и её знак. Чего же ещё желать?
Лишняя сущность.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:12
Цитата Сообщение от taras atavin Посмотреть сообщение
Лишняя сущность.
Боюсь догадаться о чём это Вы сейчас. Ниже перечислены темы про изнанку С++. Там изнан на изнане на все вкусы. Присмотрите что-нибудь не лишнее.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:13  [ТС]
О дабломаксе конечно.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:17
Цитата Сообщение от taras atavin Посмотреть сообщение
О дабломаксе конечно.
Это Вы сгоряча.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:20  [ТС]
Разве? Мне ваще то не нужен максимум дабла. К тому же я ведь могу и поменять тип на float, или на long double. Вот представьте себе: есть некая интовая переменная, надо проверить, равна ли она единице. Вы как проверять будете?
C++
1
if ((x>0)&&(x<2))
?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:23
Цитата Сообщение от taras atavin Посмотреть сообщение
Мне ваще то не нужен максимум дабла. К тому же я ведь могу и поменять тип на float, или на long double.
taras atavin, вопрос:
Цитата Сообщение от taras atavin Посмотреть сообщение
Как вернуть NaN и Infinity, проверить на NaN и Infinity?
вне контекста определённого типа не имеет смысла. А поменять-то можно. Было бы желание.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:42  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
вопрос:
Цитата Сообщение от taras atavin Посмотреть сообщение
Как вернуть NaN и Infinity, проверить на NaN и Infinity?
вне контекста определённого типа не имеет смысла.
Чем различается
C++
1
Result.x.x=std::numeric_limits<double>::quiet_NaN();
,
C++
1
Result.x.x=std::numeric_limits<float>::quiet_NaN();
и
C++
1
Result.x.x=std::numeric_limits<long double>::quiet_NaN();
?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 17:44
Цитата Сообщение от taras atavin Посмотреть сообщение
Чем различается
taras atavin, это константы разного типа. Наивное предположение о том что:
C++
1
2
3
const int a =1;
const float b = 1;
const double c = 1;
это один леший, это не в данный раздел. Даже в новичках скажут, что это разные вещи слева и инициализированы с приведением.
Я лично боюсь и представить что будет в double при попытке присвоить ему std::numeric_limits<float>::quiet_NaN() и стандартизованно ли это.
Повторяю вопрос (на Ваш вопрос). Вам нужно определить факт и причину аварии в расчёте или просто хочется понять как можно реализовать/реализованы данные константы в различных компиляторах?

Не по теме:

И второй вопрос, - сопутствующий. Как мы тут с Вами смотримся? Вспоминается К. Прутков: "Два голубя, как два родные брата жили... А нет ли у тебя с наливкою бутыли?"
Количество просмотров зашкаливает. И кстати. Форум не знает слова "наливкою"! Это несомненная практическая польза для форума, расширить его словарь таким полезным словом.
За сим разрешите откланяться.
:senor:

0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 18:23  [ТС]
IGPIGP, Вы вообще риторические вопросы понимаете?

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
Я лично боюсь и представить что будет в double при попытке присвоить ему std::numeric_limits<float>::quiet_NaN()
Да кто ж Вам сказал, что присваивание не соответствует декларации, в каждом случае своей?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 18:51
Цитата Сообщение от taras atavin Посмотреть сообщение
IGPIGP, Вы вообще риторические вопросы понимаете?
Разумеется, но не "Обо всём" же раздел.
Цитата Сообщение от taras atavin Посмотреть сообщение
Да кто ж Вам сказал, что присваивание не соответствует декларации, в каждом случае своей?
Никто не говорил. Тот пример который Вы привели под:
Цитата Сообщение от taras atavin Посмотреть сообщение
Чем различается
Говорит о том, что Вы не понимаете, что данные константы это не числа соответствующего типа, но это величины соответствующего типа по определению.
Это так же как то, что nullptr, это не нулевое значение, как когда-то было. Это указатель которого не может быть и всё.
taras atavin, в теме достаточно информации чтобы определить нештатную ситуацию и уточнить к какой категории она относится. Чем ещё помочь? Поговорить о непостижимой несообразности мирозданья?

Не по теме:

Ещё на свете много, друг Горацио, того с чем и не строит разбираться... (C):pardon:

0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 18:52  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Говорит о том, что Вы не понимаете, что данные константы это не числа соответствующего типа, но это величины соответствующего типа по определению.
Энто каким образом?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.07.2015, 22:17

Не по теме:

Жесть


http://www.webcitation.org/66HxLoJLV

Добавлено через 18 минут
Bash
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
28
29
30
31
32
bash-4.3~$ cat ./ololo_taras.c && gcc --std=c99 -lm ./ololo_taras.c && ./a.out 
#include <stdio.h>
#include <math.h>
 
int
main (int argc, char ** argv)
{
 
    int x = 0xFFF00000;
    float * ptr = (float*) &x;
    char * s = NULL;
 
    switch (fpclassify(*ptr)) {
        case FP_NAN: s = "NaN";
            break;
        case FP_INFINITE: s = "Inf";
            break;
        case FP_ZERO: s = "Zero";
            break;
        case FP_SUBNORMAL: s = "Too small";
            break;
        default: s = "Yeah! So fair, so good.";
    }
 
    fprintf(stdout, "%s\n", s);
 
    return 0;
}
NaN
bash-4.3~$ echo "man 3 isnan"
man 3 isnan
bash-4.3~$
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.07.2015, 13:12  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Жесть
И что же здесь такого специфически мягкого?
1
19.07.2015, 13:18

Не по теме:

уровень знаний адептов плюсистов

0
193 / 100 / 131
Регистрация: 23.06.2015
Сообщений: 249
19.07.2015, 14:41
Цитата Сообщение от taras atavin Посмотреть сообщение
Как вернуть NaN и Infinity
NaN = 0.0 / 0.0
Infinity = 1.0 / 0.0
-Infinity = -1.0 / 0.0

Цитата Сообщение от taras atavin Посмотреть сообщение
проверить на NaN и Infinity?
Есть функции std::isnan и std::isinf
Кроме того, с +бесконечностью или с -бесконечностью можно сравнить с помощью оператора ==
C NaN такое не прокатит, ибо NaN ничему не равен, даже другому NaN

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
 
int main()
{
    double infinity = 1.0 / 0.0;
    double minfinity = -1.0 / 0.0;
    double minfinity2 = -7.0 / 0.0;
    double nan = 0.0 / 0.0;
    double nan2 = 0.0 / 0.0;
    std::cout << infinity << std::endl;
    std::cout << minfinity << std::endl;
    std::cout << nan << std::endl;
    std::cout << std::isnan(infinity) << ' ' << std::isinf(infinity) << std::endl;
    std::cout << std::isnan(minfinity) << ' ' << std::isinf(minfinity) << std::endl;
    std::cout << std::isnan(nan) << ' ' << std::isinf(nan) << std::endl;
    std::cout << (infinity == minfinity2) << std::endl;
    std::cout << (infinity == (7.0 / 0.0)) << std::endl;
    std::cout << (minfinity == minfinity2) << std::endl;
    std::cout << (nan == nan2) << std::endl;
    std::cout << (infinity == nan2) << std::endl;
    return 0;
}
Для компилятора от Microsoft
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
28
#include <iostream>
#include <cmath>
 
double GetZero()
{
    return 0.0;
}
 
int main()
{
    double infinity = 1.0 / GetZero();
    double minfinity = -1.0 / GetZero();
    double minfinity2 = -7.0 / GetZero();
    double nan = 0.0 / GetZero();
    double nan2 = 0.0 / GetZero();
    std::cout << infinity << std::endl;
    std::cout << minfinity << std::endl;
    std::cout << nan << std::endl;
    std::cout << std::isnan(infinity) << ' ' << std::isinf(infinity) << std::endl;
    std::cout << std::isnan(minfinity) << ' ' << std::isinf(minfinity) << std::endl;
    std::cout << std::isnan(nan) << ' ' << std::isinf(nan) << std::endl;
    std::cout << (infinity == minfinity2) << std::endl;
    std::cout << (infinity == (7.0 / GetZero())) << std::endl;
    std::cout << (minfinity == minfinity2) << std::endl;
    std::cout << (nan == nan2) << std::endl;
    std::cout << (infinity == nan2) << std::endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2015, 14:41

Обработка исключений при NaN, Infinity, by zero
Здравствуйте! Подскажите, пожалуйста, как сделать обработку исключений при этих значениях. Типа: try { num = num/2;//если эта...

Ошибка -nan(ind) и nan
Доброго времени суток форумчане! Решаю задачу, в которой необходимо найти площадь треугольника по координатам его вершин. Все значения не...

Как можно убрать Infinity?
package zad7; public class main { public static void main(String args) { double z, p = 0, x, y, t, ...

Как реализована Double.NaN != Double.NaN
public static void main(String args) { Float f1 = new Float(Float.NaN); Float f2 = new Float(Float.NaN); ...

infinity размер
Вопрос почему при заданной размерности я могу добавлять бесконечно? Оо class stack{ private: int count; int *st; public: ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru