hatena
hatena
2024/09/19 (木) 14:33:08
悪戦苦闘しましたが、単精度浮動小数点型にしたら、改善しました。
対症療法的な解決で、本質的な解決策ではないと思います。
原因はskさんも推定している「実際の値は 5.6 ピッタリ」ではないのだと思います。
小数点以下桁数を固定にした場合、単精度浮動小数点型は丸められて表示されるので、見た目上は5.6になっていても実際の値はそうでない可能性があります。
これでは集計した場合など演算誤差の原因になります。
そもそも浮動小数点型は演算誤差がありますので、誤差が発生しては困る金額計算には使用すべきではありません。
フィールド名が「利益」ということなので金額値だと思いますので「通貨型」にするのが適切です。
そのうえで小数点2桁以降の端数処理をどうするのかの仕様(切り捨て、切り上げ、四捨五入、金融機関型丸めなど)を決めて演算時に丸め処理をするような設計にすべきです。
通報 ...