可能重复:
检查双精度(或浮点数)是否nan
在 C++ 中
我需要检查 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
。
请让我知道是否必须进行任何编译器设置。我在solaris上运行。或者有没有其他方法可以检查。
提前致谢。