数値のデータ型について質問です。
SQLite3で数値のデータを管理しており,その数値を計算(加算など)に用いています。小数値も管理しており,SQLiteのデータ型であるREAL型で管理したところ,加算結果が2.9999999996のような感じになってしまいました。調べたところ,doubleやfloatでは丸め誤差が生じてしまうのでBigDecimalクラスを用いるとよいと書いてありました。そこでSQLiteのTEXT型で数値を管理し,文字列からBigDecimalクラスへ型変換し計算を行なったらこのような誤差は出なくなりました。
とりあえず「BigDecimalクラスを用いたら誤差が出なくなった」で止まっており,「なぜBigDecimalならよいのか?」「なぜdoubleやfloatでは誤差が生じてしまうのか?」などがまだ理解しきれません。様々なサイトを参考にさせて頂いているのですがいまいちピンとこないので,どなたか詳しい方がいらっしゃったら教えて頂きたいです。
回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/04 04:15
2019/02/05 01:00