Возможный дубликат:
Проверка наличия двойного (или плавающего)nan
в С++
У меня есть требование проверить, является ли float nan
. Перейдя по некоторым ссылкам, я нашел наиболее распространенную проверку.
FLOAT32 f32_test_NaN = (some_value);
if (f32_test_NaN == f32_test_NaN)
{
//do something;
}
else
{
// do something;
}
Но это, похоже, не работает для меня. Мой код выглядит следующим образом:
FLOAT32 test_NaN = 0x414570A3;//some value - is this ok?
Отладка в GDB:
(gdb) p test_NaN
$1 = 1.09506982e+09
(gdb) p/x test_NaN
$2 = 0x41457080 // Hex is not same as init value - What is compiler doing?
Итак, в моем случае test_NaN
равно test_NaN
.
Пожалуйста, дайте мне знать, нужно ли выполнять настройку компилятора. Я бегу по соляриусу. Или есть другой способ проверить то же самое.
Спасибо заранее.