LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

floatの比較

LabWindows/CVI8.0を使っています。
 
2つのfloat型の値を比較するとき、うまく比較できなくて困っています。
 
float型の変数aとbがあるとします。
 
デバッグ中、View Variable Valueでこの2つの変数を見たとき、両方とも0.0600000なのですが、
aとbを比較すると、同じではないことがあります。
 
この2つの変数の表示をFloating Pointではなく、Scientificにすると、2つの違いがわかります。
 
aは5.9999999E-2、bは6.0000000E-2、となっているのです。
 
どうすればこの問題を回避できるのでしょうか。
0 Kudos
Message 1 of 3
(9,302 Views)
平素よりNI製品をご利用頂きまして誠に有難うございます。
 日本ナショナルインスツルメンツ技術部 下田と申します。

 お問い合わせの件ですが、これはC言語のみの話に限らず、プログラミング言語一般に当てはまる問題かと思います。
 弊社のサイトではないのですがこの問題を簡潔に解説しているウェブページを発見しましたので、以下のページをご参照下さい。

算術演算のTips and Tricks 内 「浮動小数点の比較は危険?」
 http://www.nextindex.net/java/class/DecimalTips.html

C FAQ 14章 浮動小数点 内 「14.5: 2つの浮動小数点の値が"十分近い"ことを判定するよい方法」
 http://www.kouno.jp/home/c_faq/c14.html

以上、お手数ですが宜しくお願い致します。
0 Kudos
Message 2 of 3
(9,273 Views)
大変参考になりました。
 
ありがとうございました。
 
0 Kudos
Message 3 of 3
(9,270 Views)