重複の可能性:
小数点以下の桁数を2倍に移動
次の数の合計が等しくないのはなぜ0.4622
ですか?しかし0.46219999999999994
Double total = new Double(0.08) + new Double(0.0491) + new Double(0.3218) +
new Double(0.0113) + new Double(0.0); // = 0.46219999999999994
ユーザーの入力をチェックするアプリケーションがあります。
ユーザーは5つの10進数と合計数を入力します。アプリケーションは、コンマの後ろの小数点以下4桁でキャップされた5つの数字すべての合計が合計数と等しいかどうかをチェックします。
それをキャップすると0.4621
、に等しくないものが得られ0.4622
ます。DecimalFormatは切り上げられるため、使用できません。そして、私が明示的に言うと、切り捨てると、この状況では失敗します。
これをどのように解決できるかについての提案はありますか?