0

私は徹底的な検索を行いましたが、アンダーフローを表現する方法ではなく、アンダーフローとは何か、およびそれがどのように機能するかについての説明しか見つけられないようです。

簡単に言うと、整数オーバーフロー、浮動小数点オーバーフロー (inf)、およびアンダーフローを実験するプログラムを作成し、printf 関数を使用してこれらの条件の影響を出力しています。最初の 2 つは成功しましたが、浮動小数点アンダーフローの結果、非正規数をうまく表現できていないようです。私の知る限り、システムが条件を処理する方法によっては、アンダーフローの症状として、出力の桁が失われたり、ゼロに丸められたりすることがあります。

最小の浮動小数点値を見つけるために、float.h ヘッダー ファイルを調べました。FLT_MIN は 0.000000 として表示され (したがって、アンダーフローにつながる操作のデモンストレーションでは機能しません)、DEC32_MIN (可能な限り最小の正規化された正の値を保持していると思われます) は、float.h ヘッダー ファイルが使用されているにもかかわらず、コンパイラによって「未定義」としてフラグが付けられ続けます。含まれていますが、これはかなり不安です。その後、インターネット上で最小の正規化された非ゼロの 32 ビット浮動小数点値を検索し、あらゆる方法でそれらを分割して実験しました。それでも、私のシステムはそれを同じ形式で表しているようで、アンダーフローを完全に回避しているようです。

意図的にエラーを発生させ、それを正確に表現するように求めているのは、かなり大げさなように思えることはわかっていますが、それは教育目的のためです。

私のシステムでは、float を 32 ビット、double を 64 ビット、long double を 128 ビットとして処理します。それについて言及することもできます。

質問は; float、double、および long double 型でアンダーフローを作成し、それを出力に表示して、明らかにアンダーフロー エラーになるようにするにはどうすればよいですか?

回答に加えて、浮動小数点アンダーフローをさらに説明することに関するヘルプは非常に高く評価されます。私はCとプログラミング全体にかなり慣れていません。

ありがとうございました、

GS

4

0 に答える 0