C 標準ライブラリ - <float.h>


はじめに

C 標準ライブラリの float.h ヘッダー ファイルには、浮動小数点値に関連するプラットフォーム依存の定数のセットが含まれています。これらの定数は、プログラムの移植性を高める ANSI C によって導入されました。これらの定数を説明する前に、浮動小数点数が次の 4 つの要素で構成されていることを明確にすることが最善です。

指数の底、2は2進数を表し、10は10進数を表し、16は16進数を表します、など... e指数、最小値eminと最大値の間の1つ マックス。 p精度、基数 b の有効数字
の間の整数e

上記の 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