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

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

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

Author24 — интернет-сервис помощи студентам
Как вернуть 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...

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

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

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

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

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
C:\Projects\Test10\Test10\Test.cpp|7|error: 'isfinite' is not a member of 'std'|
Должен быть включен хедер cmath и поддержка С++11.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 12:16  [ТС] 24
Цитата Сообщение от ct0r Посмотреть сообщение
Уж простите, но если такое не доходит, пора на пенсию и внуков няньчить.
Может если доходит? Потому что ничего он не иллюстрирует.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:06 25
Цитата Сообщение от taras atavin Посмотреть сообщение
можно сравнивать?
Сравнивать что? Их же, - нельзя. То есть вообще можно всё, но результат будет нелогичный. Вещь сама себе неравна может быть? Легко.
taras atavin, ведь в примере показано как пошагово определить NAN, далее бесконечность и её знак. Чего же ещё желать? У Вас задача определить или понять, что можно сравнивать?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:08  [ТС] 26
Цитата Сообщение от IGPIGP Посмотреть сообщение
taras atavin, ведь в примере показано как пошагово определить NAN, далее бесконечность и её знак. Чего же ещё желать?
Лишняя сущность.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:12 27
Цитата Сообщение от taras atavin Посмотреть сообщение
Лишняя сущность.
Боюсь догадаться о чём это Вы сейчас. Ниже перечислены темы про изнанку С++. Там изнан на изнане на все вкусы. Присмотрите что-нибудь не лишнее.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:13  [ТС] 28
О дабломаксе конечно.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:17 29
Цитата Сообщение от taras atavin Посмотреть сообщение
О дабломаксе конечно.
Это Вы сгоряча.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:20  [ТС] 30
Разве? Мне ваще то не нужен максимум дабла. К тому же я ведь могу и поменять тип на float, или на long double. Вот представьте себе: есть некая интовая переменная, надо проверить, равна ли она единице. Вы как проверять будете?
C++
1
if ((x>0)&&(x<2))
?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 15:23 31
Цитата Сообщение от taras atavin Посмотреть сообщение
Мне ваще то не нужен максимум дабла. К тому же я ведь могу и поменять тип на float, или на long double.
taras atavin, вопрос:
Цитата Сообщение от taras atavin Посмотреть сообщение
Как вернуть NaN и Infinity, проверить на NaN и Infinity?
вне контекста определённого типа не имеет смысла. А поменять-то можно. Было бы желание.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 15:42  [ТС] 32
Цитата Сообщение от 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
9005 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.07.2015, 17:44 33
Цитата Сообщение от 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 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.07.2015, 18:23  [ТС] 34
IGPIGP, Вы вообще риторические вопросы понимаете?

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

Не по теме:

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

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

Не по теме:

Жесть


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 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.07.2015, 13:12  [ТС] 38
Цитата Сообщение от castorsky Посмотреть сообщение
Жесть
И что же здесь такого специфически мягкого?
1
castorsky
19.07.2015, 13:18
  #39

Не по теме:

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

0
193 / 100 / 131
Регистрация: 23.06.2015
Сообщений: 249
19.07.2015, 14:41 40
Цитата Сообщение от 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
19.07.2015, 14:41
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2015, 14:41
Помогаю со студенческими работами здесь

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

Как можно убрать Infinity?
package zad7; public class main { public static void main(String args) { ...

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru