名前空間
変種
操作

FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数関数
(C++11)
(C++11)

(C++11)
(C++11)
べき乗関数
(C++11)
(C++11)
三角関数と
双曲線関数
(C++11)
(C++11)
(C++11)

誤差関数とガンマ関数
(C++11)
(C++11)
(C++11)
(C++11)
最近接整数への浮動小数点数操作
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮動小数点数の操作関数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分類と比較
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
マクロ定数
分類
FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN
(C++11)(C++11)(C++11)(C++11)(C++11)


 
ヘッダー <cmath> で定義
#define FP_NORMAL    /* 実装定義 */
(C++11以降)
#define FP_SUBNORMAL /* 実装定義 */
(C++11以降)
#define FP_ZERO      /* 実装定義 */
(C++11以降)
#define FP_INFINITE  /* 実装定義 */
(C++11以降)
#define FP_NAN       /* 実装定義 */
(C++11以降)

FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN マクロは、それぞれ浮動小数点数の異なるカテゴリを表します。これらはすべて整数定数式に展開されます。

Constant 説明
FP_NORMAL 値が正規数であることを示します。つまり、無限大、非正規数、NaN、またはゼロではありません。
FP_SUBNORMAL 値が非正規数であることを示します。
FP_ZERO 値が正または負のゼロであることを示します。
FP_INFINITE 値が基盤となる型で表現できないこと(正または負の無限大)を示します。
FP_NAN 値が非数(NaN)であることを示します。

[編集]

#include <cfloat>
#include <cmath>
#include <iostream>
 
auto show_classification(double x)
{
    switch (std::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()
{
    std::cout << "1.0/0.0 is " << show_classification(1 / 0.0) << '\n'
              << "0.0/0.0 is " << show_classification(0.0 / 0.0) << '\n'
              << "DBL_MIN/2 is " << show_classification(DBL_MIN / 2) << '\n'
              << "-0.0 is " << show_classification(-0.0) << '\n'
              << "1.0 is " << show_classification(1.0) << '\n';
}

出力

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

[編集] 関連項目

与えられた浮動小数点数値を分類する
(関数) [編集]
C 言語のドキュメントFP_categories の場合)
English 日本語 中文(简体) 中文(繁體)