金額計算なんかでfloatを使うと誤差が出るっていうのは基礎的な話ではありますが、背景知識を含めて理解しておこうと思ったのでメモります。
float,doubleでの誤差
浮動小数点とは目に見える小数点ではなく、計算で誤差が発生することを前提とした数値データになります。
理由としてはコンピューターは内部では当たり前ですが、2のn乗のような形でデータを格納しているため、実際には近似値の計算になってしまいます。
こういったデメリットはありますが非常に広い範囲の数を扱うことができ、数百桁レベルの数を扱うことができます。
ちなみに浮動小数点の逆が固定小数点であり、誤差が出ない代わりに桁数が制限されます。
金額の計算はdecimal型で
金額計算などをする場合、当然誤差は許されないので、その場合にはdecimal型を使うのが誤差が出ず問題がないようです。
ただ言語の方でdecimalに対応するライブラリがない、メモリを圧迫する、パフォーマンスを優先させたいなどの場合はfloat/doubleが選択肢としてあげられるようです。
参考リンク
金額計算(会計処理など)は Decimal 型で、科学計算には Double 型 を使用する