浮動小数点数のゼロ除算
浮動小数点数のゼロでの除算
説明
この欠陥は、除算演算の分母がゼロ値の浮動小数点数になる可能性がある場合に発生します。
リスク
ゼロ除算はプログラムをクラッシュさせる可能性があります。
修正方法
修正方法は欠陥の根本原因によって異なります。多くの場合、結果の詳細 (または
除算の前に分母がゼロ値かどうかをチェックしてエラーを処理することをお勧めします。次のように除算を直接実行するのは避けます。
res = num/den;
res = div(num, den);
以下の修正例を参照してください。
問題を修正しない場合、たとえば、コード内で無限大を処理する場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
既定では、Bug Finder 解析は無限大と NaNs
を認識しません。結果が無限大および NaNs
になる演算には、欠陥としてフラグが設定される可能性があります。コードで無限大および NaN
の値を処理するには、オプション [非有限の浮動小数点を検討] (-allow-non-finite-floats)
を使用します。
チェッカーの拡張
入力値が不明であり、入力のサブセットのみがエラーの原因となっている場合、既定の Bug Finder 解析ではこの欠陥が報告されない可能性があります。特定のシステム入力値を原因とする欠陥の有無をチェックするには、より厳密な Bug Finder 解析を実行してください。特定のシステム入力値から欠陥を見つけるための Bug Finder チェッカーの拡張を参照してください。
例
結果情報
グループ: 数値 |
言語: C | C++ |
既定値: オン |
コマンド ライン構文: FLOAT_ZERO_DIV |
影響度: High |
バージョン履歴
R2013b で導入