インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
IEEE 754-2008 標準は、コンピューター・システムにおける浮動小数点表現の形式と表示方法、および推奨するデータ交換形式を定めたものです。例外条件とそれらの標準処理が定義されています。
バイナリー形式の浮動小数点例外関数については、ISO C99 で説明されています。
10 進の浮動小数点例外関数は、fenv.h ヘッダーファイルで定義されています。
コンパイラーは、C および C++ で 10 進の浮動小数点型をサポートしています。10 進の浮動小数点形式は IEEE 754-2008 標準で定義されています。C では、次の 10 進の浮動小数点型をサポートしています: _Decimal32、_Decimal64、および _Decimal128。 Windows® および Linux* の C++ では、次の 10 進のクラスをサポートしています: decimal32、decimal64、および decimal128 (OS X* の C++ では 10 進の浮動小数点をサポートしていません)。 Linux* の C++ でこの機能を使用するには、gcc* 4.5 以降が必要です。
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 進の浮動小数点演算中に発生する例外を検出するには、次の浮動小数点例外関数を使用します。
関数 |
簡単な説明 |
---|---|
fe_dec_feclearexcept() |
サポートされている浮動小数点例外をクリアします。 |
fe_dec_fegetexceptflag |
浮動小数点ステータスフラグの実装定義の表現を格納します。 |
fe_dec_feraiseexcept |
サポートされている浮動小数点例外を発行します。 |
fe_dec_fesetexceptflag |
浮動小数点ステータスフラグを設定します。 |
fe_dec_fetestexcept() |
指定されている浮動小数点例外フラグのサブセットのうち、現在設定されているものを特定します。 |