、私はKを表示すると、私は、BigDecimalのエラーJavaでは
while(rst.next()) {
k = k + Double.parseDouble(rst.getString(5));
}
NOTE: In database, I have values as 125.23, 458.45, 665.99 (all two decimals)
をデータベースからデータを取得し、while
ループを使用して同じことを追加してい double k=0.0;
としてKを定義しています私は価値が得られる
k = 6034.299999999992
そこで私はBigDecimal
を導入し、今、私が正しいとするbd=6034.30
として新しい合計を取得
BigDecimal bd = new BigDecimal(k);
bd = bd.setScale(2,BigDecimal.ROUND_UP);
以下にコードを変更しました。
は問題私は、下記の他の場所で同じ使用しているときに問題がある1
まあ、私は私が157.30
を得ることが手動で追加した後などbd=157.30
を示しているはず
k = 157.3
bd = 157.31
を取得していますものです。
157.31
と表示されている理由は何ですか?
問題2
また、kは非常に多くの小数点以下の値を示している理由は、何らかの理由?以下 は、私は二重の変数k
157.3
67.09
1014.6000000000003
229.06999999999996
のために取得しています異なる値であり、私はいつかそれが2進を表示し、ほとんどの時間は、それが14進値を示し、それは小数点以下を表示いつか理解していません。
ご迷惑をおかけして申し訳ございません。
なぜあなたは、丸めのためにこの答えのような何か?: を別の関数を定義しないhttp://stackoverflow.com/a/8911683/744859 、人々がで示唆としてのBigDecimalとしてKを定義しますクリーンで効率的なコードを持っているとコメントしています。 –
@Jav_Rock:私は関数を使用していますが、ここではコードを提示したことを説明するために...詳細情報が必要な場合はお知らせください... –