名稱空間
變體
操作

fpclassify

來自 cppreference.com
< c‎ | 數值‎ | 數學
 
 
 
常用數學函式
函式
基本操作
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大值/最小值操作
(C99)
(C99)
指數函式
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
冪函式
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角函式和雙曲函式
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最近整數浮點數
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮點數操作
(C99)(C99)
(C99)(C23)
(C99)
窄化操作
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子與量子指數
十進位制重新編碼函式
總序和載荷函式
分類
fpclassify
(C99)
(C99)
(C99)
(C99)
(C23)
誤差函式和伽馬函式
(C99)
(C99)
(C99)
(C99)
型別
宏常量
特殊浮點值
(C99)(C23)
引數和返回值
錯誤處理
快速操作指示符
 
定義於標頭檔案 <math.h>
#define fpclassify(arg) /* implementation defined */
(C99 起)

將浮點值 arg 分類為以下類別:零、次正規、正規、無窮大、NAN 或實現定義的類別。該宏返回一個整數值。

FLT_EVAL_METHOD 被忽略:即使引數以比其型別更寬的範圍和更高的精度進行評估,它也會首先轉換為其語義型別,並且分類基於此:一個正規的 long double 值在轉換為 double 時可能會變為次正規,在轉換為 float 時可能會變為零。

目錄

[編輯] 引數

arg - 浮點值

[編輯] 返回值

返回 FP_INFINITEFP_NANFP_NORMALFP_SUBNORMALFP_ZERO 或實現定義的型別之一,指定 arg 的類別。

[編輯] 示例

#include <float.h>
#include <math.h>
#include <stdio.h>
 
const char* show_classification(double x)
{
    switch(fpclassify(x))
    {
        case FP_INFINITE:  return "Inf";
        case FP_NAN:       return "NaN";
        case FP_NORMAL:    return "normal";
        case FP_SUBNORMAL: return "subnormal";
        case FP_ZERO:      return "zero";
        default:           return "unknown";
    }
}
 
int main(void)
{
    printf("1.0/0.0 is %s\n", show_classification(1 / 0.0));
    printf("0.0/0.0 is %s\n", show_classification(0.0 / 0.0));
    printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN / 2));
    printf("-0.0 is %s\n", show_classification(-0.0));
    printf("1.0 is %s\n", show_classification(1.0));
}

輸出

1.0/0.0 is Inf
0.0/0.0 is NaN
DBL_MIN/2 is subnormal
-0.0 is zero
1.0 is normal

[編輯] 參考

  • C23 標準 (ISO/IEC 9899:2024)
  • 7.12.3.1 fpclassify 宏 (p: TBD)
  • C17 標準 (ISO/IEC 9899:2018)
  • 7.12.3.1 fpclassify 宏 (p: TBD)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.12.3.1 fpclassify 宏 (p: 235)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.12.3.1 fpclassify 宏 (p: 216)

[編輯] 參閱

檢查給定數字是否具有有限值
(函式宏) [編輯]
(C99)
檢查給定數字是否為無窮大
(函式宏) [編輯]
(C99)
檢查給定數字是否為 NaN
(函式宏) [編輯]
檢查給定數字是否為正常數
(函式宏) [編輯]