ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS

FAQ / カバレッジマスターwinAMS

テストデータ設定に関する問題

301_05 : 浮動小数点の変数の期待値に値を設定しましたが、出力結果と値が異なるにもかかわらず、期待値判定がOKになってしまいます。なぜでしょうか?

【質問】
浮動小数点の変数の期待値に値を設定しましたが、出力結果と値が異なるにもかかわらず、期待値判定がOKになってしまいます。なぜでしょうか?

【回答】
これは、浮動小数点変数の有効桁数が原因です。例えば、浮動小数点変数がfloat型の場合、変数は4バイト=32ビットのサイズを持ちますが、そのビットの使われ方は下図のようになります。そのうち、「仮数部 =23bit」が表すことの出来る有効数字(桁数)に当たります。これは、2進数で24ビット(仮数部23ビット+符号)、10進数では約7桁になります。

 

 

下の様な関数のテストにおいて、CSVファイルの入力としてfloat型の引数@finに「1.123456789」を設定した場合、float型の変数には上位7桁までしか格納出来ません。このためカバレッジマスターは、この有効数字を越えた桁数に対して、IEEE 754に定義された「最近値への丸め」(四捨五入)を行い、「1.123457」を引数@finに入力します。

期待値に有効数字を越えた桁数を設定した場合も、同様にIEEE 754の最近値への丸めが適用され、テストでの期待値比較には「1.123457」が使用されます。このため、入力CSVファイルの出力変数(gb_fval)に、期待値として「1.123456789」、「1.123457」のどちらを設定した場合も、実際の期待値には「1.123457」が使用されて判定され、結果はOKとなります。

また、出力CSVファイルの入力変数(@fin)のデータには、実際に変数に入力された値「1.123457」が出力されます。

 

(例)

float gb_fval;

void floattest(float fin)
{
    gb_fval = fin;
}

 

図1:入力CSVファイル

 


図2:出力CSVファイル

 

関連サポート情報検索

【サポート情報サイト内Google検索】

検索キーワード:  浮動小数点 | 期待値

他のキーワード検索


参考情報・リンク