C++ 数値プロパティを理解しようとしています。このように、アンダーフロー現象に興味があります。アンダーフローの例とその処理方法を誰か教えてもらえますか?
質問する
12773 次
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 に答える