![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
nikita |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет! Помогите разобраться : Есть функция которая возвращает значение типа double. На некоторых наборах входных данных она возвращает "nan". Как я понимаю nan = Not A Number. Как проверить является ли значение переменной равным nan? Заранее спасибо!
|
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Link
Цитата NaN не равен ни одному другому значению (даже самому себе[2]); соответственно, самый простой метод проверки результата на NaN — это сравнение полученной величины с самой собой. ![]() |
|
|
nikita |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо! Ответ очень помог
![]() |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
кстати, я не проверял, как оптимизатор обойдётся с кодом вида
может, он решит, что isNan всегда == false |
|
|
Iron Bug |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(Алексей1153 @ 4.2.2013, 17:12) Link может, он решит, что isNan всегда == false теоретически, он может так решить, если переменная не меняется. а если она должна меняться извне - то нужен volatile. |
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
думаю, как процедуру оформить можно
|
|
|
nikita |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Я оформил так :
Вроде все работает как нужно) |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(Алексей1153 @ 4.2.2013, 16:12) Link bool isNan=!(a==a); я бы в жизни не допёр, что сия запись значит! Подумал бы, что это ересь. |
|
|
Алексей1153 |
![]()
Сообщение
#9
|
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
nikita, как сказала Iron Bug, необходимо volatile переменные. Только я их в коде никогда не использовал, но предполагаю, что это должно быть атрибутом аргумента - ведь именно его не нужно оптимизировать. Шаблон не нужен - это всё имеет смысл только для вещественных чисел, а float приведётся к double:
Litkevich Yuriy, ну, выглядит как нагромождение знаков, но там как-то так
И! Апофигиоз: у меня НЕ работает (MinGW) - см картинку. Под cl не пробовал |
|
|
||
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(Алексей1153 @ 5.2.2013, 20:54) Link что это должно быть атрибутом аргумента нет, это квалификатор переменной, т.е.:
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 3.8.2025, 22:53 |