Cの浮動小数点型の下限はありますか? 整数型 (int は少なくとも 16 ビット) に下限があるように?
7 に答える
はい。 float.h
次のような定数が含まれます。
FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON
float
これは、 、double
、および表現で表すことができる最小の大きさのゼロ以外の値long double
です。
FLT_MAX
とFLT_MIN
は、 で表すことができる極端な正数と負数を表しfloat
ます。類似DBL_
品LDBL_
もございます。
FLT_DIG, DBL_DIG, LDBL_DIG
10 進数の桁数の精度として定義されます。
xxx_MIN
または値のいずれかを求めていxxx_EPSILON
ます。
float.h
FLT_MIN
浮動小数点型 (およびを含むDBL_MIN
) のさまざまなプロパティを記述する多くのマクロが含まれています。
制限の要件の説明はfloat.h
、標準 (C90 または C99 - 5.2.4.2.2「浮動型の特性」) に記載されています。
1E-37
特に、標準によれば、実装は少なくともforfloat
またはの下限をサポートする必要がありdouble
ます。しかし、実装はそれよりも自由に行うことができます (そして、 と で何をするかを示しますFLT_MIN
) DBL_MIN
。
標準文書が必要な場合に、標準文書のコピーをどこで入手できるかについては、この質問を参照してください。
たぶんこれが役立ちます:float.h参照(C ++です。プレーンCにも当てはまるかどうかはわかりません)
このドラフト C99 標準 (PDF) では、セクション 5.2.4.2.2 に浮動小数点型の精度の最小値が記載されています。
(ウィキペディアの C99 で見つかりました。)
ここで役立つリファレンスは、すべてのコンピューター科学者が浮動小数点演算について知っておくべきことです。
浮動小数点数の性質 (サイズ、精度、制限) は、プログラミング言語ではなく、ハードウェアによって実際に定義されます。x86 の単精度浮動小数点数は、C、C#、Java、およびその他の実用的なプログラミング言語と同じです。(例外は、ソフトウェアで奇数幅の浮動小数点数を実装する難解なプログラミング言語です。)
標準ドラフトからの抜粋 (n1401.pdf)
附属書 F (規範) IEC 60559 浮動小数点演算 F.1 はじめに 1 ... _ _STDC_IEC_559_ _ を定義する実装は、以下に準拠しなければならない この附属書の仕様。... F.2 タイプ 1 C 浮動小数点型は、次のように IEC 60559 形式と一致します。 -- float 型は IEC 60559 シングル形式と一致します。 -- double 型は、IEC 60559 double 形式に一致します。 -- long double 型は、IEC 60559 拡張形式に一致します ...
ウィキペディアには、興味深いと思われる IEC 559 (または IEEE 754-1985) に関する記事があります。