宏/函式
<cmath> <ctgmath>

isnan

isnan(x)
函式
bool isnan (float x);bool isnan (double x);bool isnan (long double x);
是不是非數字
如果 xNaN (Not-A-Number,非數字) 值,則返回非零值 (true);否則返回零 (false)。

NaN 值用於標識浮點元素的未定義或不可表示的值,例如負數的平方根或 0/0 的結果。

在 C 語言中,這實現為一個返回 int 值的宏。 x 的型別應為 floatdoublelong double
在 C++ 中,它透過針對每種浮點型別的函式過載實現,每個過載都返回一個 bool 值。

引數

x
一個浮點值。

返回值

如果 xNaN 值,則返回非零值 (true);否則返回零 (false)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
/* isnan example */
#include <stdio.h>      /* printf */
#include <math.h>       /* isnan, sqrt */

int main()
{
  printf ("isnan(0.0)       : %d\n",isnan(0.0));
  printf ("isnan(1.0/0.0)   : %d\n",isnan(1.0/0.0));
  printf ("isnan(-1.0/0.0)  : %d\n",isnan(-1.0/0.0));
  printf ("isnan(sqrt(-1.0)): %d\n",isnan(sqrt(-1.0)));
  return 0;
}

輸出

isnan(0.0)       : 0
isnan(1.0/0.0)   : 0
isnan(-1.0/0.0)  : 0
isnan(sqrt(-1.0)): 1


另見