12-19-2007 07:33 PM
12-19-2007 10:37 PM
配列中の0.1~1.5のデータは、どのように作成しましたでしょうか? また、検索に使用する0.1から1.5のデータはどのように作成しましたでしょうか? 0.1~1.5を直接数値定数で用意した場合と、0.1を整数倍して得たもの、あるいは0.1を次々と加算して得たものは、それぞれに内部で微妙に数値が違います。これは、2進数では循環小数になって厳密に表しきれないからですが、ためしに、0.1を「×」で6倍し、定数の0.6と「=」で結んでみてください。結果はFalseになると思います。おそらくこうしたことが原因で、生成の仕方が違うことで「厳密には違う」と判定されて検索できないのだと思います。Doubleであっても一致しません(Singleだともっと一致しません)。
なので、小数を比較する際は、=ではなく、差をとって微少量以下、とかで一致と判断しますが、今回のように配列の検索でやる場合は、「Threshold 1D array」関数でざっくりした指標を得るか、もしくは10倍して整数化しておいてから配列の検索にかける、などすると良いかと思います。
12-20-2007 12:57 AM