Twitterの話題に乗っかって、内容をまとめてみようと思います。
私自身の考えではなく、様々な意見を整理したいなという試みです。僕には知識はありません。
B○zzNews並みに頑張ろうと思います。
前提
基本的に、Javaを中心として、その周辺についても少し触れるぐらいのアプローチで書こうと思います。
ポイントとしては、以下の3点です。
※無意識に利用している部分(基礎的で普段意識しないところ)ではありますが、とても重要な話です。
1.Javaではあたり前のように計算処理にはBigDecimalが使われている
2.ではなぜ、BigDecimalではないといけないのか
3.どういった計算ならBigDecimalを利用するのか/利用しないのか
※本記事は演算誤差についてあまり厳密に的確な内容ではない可能性があります。
Java内の演算処理方法としてベターな方向の提示を目的としていますが、「誤差」や「精度」などに関して、
誤解を招く可能性があり、申し訳ないです。
BigDecimal以外もそうですが、100%誤差の無いものではなく、 それぞれの言語仕様、型仕様、小数点数方式、有効桁数、実行環境etc...によって精度は変わってくるという認識です。
精度などについては言及せず、以下のURL参照という形でお願いします。
参考:浮動小数点数の限界
BigDecimal 基本編
Javaプログラマーのためのjava.math.BigDecimalまとめ