# isnormal

< c‎ | numeric‎ | math

定义于头文件 `<math.h>` |  |
#define isnormal(arg) /* implementation defined */ |  | (C99 起)

确定给定的浮点数 `arg` 是否正规，即它不是零、非正规、无穷大或 `NaN` 。该宏返回整数值。

忽略 FLT_EVAL_METHOD ：即使以多于参数类型的范围和精度对它求值，首先仍将它转换到其语义类型，然后分类基于该类型。

### 参数

arg | - | 浮点值

### 返回值

若 `arg` 正规则为非零整数值，否则为 ​0​ 。

### 示例

    #include <stdio.h>
    #include <math.h>
    #include <float.h>

    int main(void)
    {
        printf("isnormal(NAN)         = %d\n", isnormal(NAN));
        printf("isnormal(INFINITY)    = %d\n", isnormal(INFINITY));
        printf("isnormal(0.0)         = %d\n", isnormal(0.0));
        printf("isnormal(DBL_MIN/2.0) = %d\n", isnormal(DBL_MIN/2.0));
        printf("isnormal(1.0)         = %d\n", isnormal(1.0));
    }

输出：

    isnormal(NAN)         = 0
    isnormal(INFINITY)    = 0
    isnormal(0.0)         = 0
    isnormal(DBL_MIN/2.0) = 0
    isnormal(1.0)         = 1

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.12.3.5 The isnormal macro (p: 237)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.12.3.5 The isnormal macro (p: 217-218)

### 参阅

fpclassify (C99) | 对给定的浮点值分类 (宏函数)
isfinite (C99) | 检查给定数是否具有有限值 (宏函数)
isinf (C99) | 检查给定数是否是无穷大 (宏函数)
isnan (C99) | 检查给定数是否为 NaN (宏函数)