C 標準ライブラリ - <float.h>
はじめに
C 標準ライブラリの float.h ヘッダー ファイルには、浮動小数点値に関連するプラットフォーム依存の定数のセットが含まれています。これらの定数は、プログラムの移植性を高める ANSI C によって導入されました。これらの定数を説明する前に、浮動小数点数が次の 4 つの要素で構成されていることを明確にすることが最善です。
指数の底、2は2進数を表し、10は10進数を表し、16は16進数を表します、など... | e | 指数、最小値
emin | と最大値の間の1つ の間の整数e | マックス
。 | | p
精度、基数 b の有効数字 | 上記の 4 つのコンポーネントに基づいて、浮動小数点数の値は次のようになります: floating-point = ( S ) p x be または floating-point = (+/-)精度 x ベース指数 ライブラリ マクロ 次の値は実装固有であり、#define ディレクティブを通じて定義されます。これらの値は、以下に示す値より小さくてはなりません。 FLT のすべてのインスタンスは float 型を参照し、DBL は double 型を参照し、LDBL は long double 型を参照することに注意してください。 マクロ | 説明 |
---|
FLT_ROUNDS | 浮動小数点加算の丸めモードを定義します。次の値のいずれかになります: -1 - 決定できません 0 -傾向があるゼロに向かって移動します 1 - 最も近い値に移動します 2 - 正の無限大に向かって移動します 3 - 負の無限大に向かって移動します
| FLT_RADIX 2 | このマクロは次のように定義しますの基礎指数表現のカウント。基数 2 は 2 進数を表し、基数 10 は 10 進数を表し、基数 16 は 16 進数を表します。 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG | これらのマクロは、FLT_RADIX ベースの桁数を定義します。 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 | これらのマクロは、四捨五入によって表現が変更されない 10 進数の最大値 (基数 10) を定義します。 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP | これらのマクロは、基数が FLT_RADIX である場合の指数の負の最小整数値を定義します。 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 | これらのマクロは、10 を底とする指数の負の最小整数値を定義します。 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP | これらのマクロは、基数が FLT_RADIX である場合の指数の最大整数値を定義します。 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 | これらのマクロは、基数 10 が使用される場合の指数の最大整数値を定義します。 | FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 | これらのマクロは、最大の有限浮動小数点値を定義します。 | FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 | これらのマクロは、表現できる最小有効数を定義します。 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 | これらのマクロは、最小の浮動小数点値を定義します。 |
例 次の例は、float.h ファイルで定義されたいくつかの定数の使用を示しています。 #include <stdio.h>#include <float.h>int main(){
printf("The maximum value of float = %.10e\n", FLT_MAX);
printf("The minimum value of float = %.10e\n", FLT_MIN);
printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);} 上記のプログラムをコンパイルして実行すると、次の結果が得られます: The maximum value of float = 3.4028234664e+38The minimum value of float = 1.1754943508e-38The number of digits in the number = 7.2996655210e-312 |