インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

浮動小数点形式

IEEE 754-2008 標準は、コンピューター・システムにおける浮動小数点表現の形式と表示方法、および推奨するデータ交換形式を定めたものです。例外条件とそれらの標準処理が定義されています。バイナリー形式の浮動小数点例外関数については、ISO C99 で説明されています。10 進の浮動小数点例外関数は、fenv.h ヘッダーファイルで定義されています。コンパイラーは、C および C++ で 10 進の浮動小数点型をサポートしています。10 進の浮動小数点形式は IEEE 754-2008 標準で定義されています。

C では、次の 10 進の浮動小数点型をサポートしています。

Windows* および Linux* の C++ では、次の 10 進のクラスをサポートしています。

Linux* の C++ でこの機能を使用するには、GCC 4.5 以降が必要です。

macOS* の C++ では 10 進の浮動小数点はサポートされていません。

10 進の浮動小数点の適切な動作を保証するには、標準ヘッダーをインクルードする前に __STDC_WANT_DEC_FP__ を定義する必要があります。これは、実行時に正しい 10 進の浮動小数点結果が得られるように、10 進マクロおよびライブラリー関数の宣言に必要です。

Linux* の例

#include <iostream>
#define __STDC_WANT_DEC_FP__
#include <decimal/decimal>
typedef std::decimal::decimal32 _Decimal32;
typedef std::decimal::decimal64 _Decimal64;
typedef std::decimal::decimal128 _Decimal128;
#include <dfp754.h>

using namespace std;
using namespace std::decimal;

int main() {
    std::decimal::decimal32 d = 4.7df;
    std::cout << decimal_to_long_double(d) << std::endl; 
    return 0; 
}

Windows* の例

#include <iostream>
#define __STDC_WANT_DEC_FP__
#include <decimal>
#include <dfp754.h>

using namespace std;
using namespace std::decimal;

int main() {
    std::decimal::decimal32 d = 4.7df;
    std::cout << decimal_to_long_double(d) << std::endl; 
    return 0; 
}

10 進の浮動小数点ステータスをチェックするための関数

これらの浮動小数点例外関数を使用して、10 進の浮動小数点演算で発生する例外を検出できます。

浮動小数点関数

関数

簡単な説明

fe_dec_feclearexcept()

サポートされている浮動小数点例外をクリアします。

fe_dec_fegetexceptflag

浮動小数点ステータスフラグの実装定義の表現を格納します。

fe_dec_feraiseexcept

サポートされている浮動小数点例外を発行します。

fe_dec_fesetexceptflag

浮動小数点ステータスフラグを設定します。

fe_dec_fetestexcept()

指定されている浮動小数点例外フラグのサブセットのうち、現在設定されているものを特定します。