floatで定義しているカラムに、0.1とかいれて
select * from table_name where number = 0.1
などと検索してみると・・・なぜか出てこない。
原因はというと・・・
原因は浮動小数点
原因は浮動小数点にあります。
浮動小数点は2進数であらわされるため、少数は正確な値があらわせないことがあります。
というか、ほとんどの数値は正しく表すことができません。
先にあげた例だと、データベースには0.1よりちょっと大きい値が入ってしまいます。
0.5とかなら大丈夫ですが、0.1とか2進法であらわすと半端な数値になってしまう場合は無理。
不等号で扱う分にはあまり問題にならないのですが、問題はイコールで検索する場合です。
ということで、基本的にDECIMAL型を使ったほうが良いでしょう。