6

C++ 数値プロパティを理解しようとしています。このように、アンダーフロー現象に興味があります。アンダーフローの例とその処理方法を誰か教えてもらえますか?

4

2 に答える 2

8

浮動小数点アンダーフローの例は次のとおりです。

double d = DBL_MIN / 3.0;

準拠する IEEE 754 実装はd、「<a href="http://en.wikipedia.org/wiki/Denormal_number" rel="noreferrer">サブノーマル」、つまりゼロに非常に近い数値に設定する必要があります。精度が低下します。ウィキペディアには多くの情報があります。

一部の実装では、「ゼロにフラッシュ」する場合があります。上記の例の結果は、dゼロに設定することです。

アンダーフローは、数値を表すために使用できない大きな負の指数の結果です。計算を「正規化」することで、それらを回避できる場合があります。これは、選択した N に対して x 1、 x 2 、… の代わりにx 1 *2 N、 x 2 *2 N 、…で何らかの方法で計算することになります。

浮動小数点アンダーフローは未定義の動作ではありません。必要に応じて、「FPU 例外」を使用して、ポーリングまたは SIGFPE の受信によって検出できます。「FPU 例外」は、名前以外は C++ 例外と共通点がないことに注意してください。

于 2013-07-12T09:13:11.403 に答える