BigDecimal Error

В Java я определил k как double k = 0,0;

Я беру данные из базы данных и добавляю их, используя цикл while ,

while(rst.next()) {
k = k + Double.parseDouble(rst.getString(5));
}

ПРИМЕЧАНИЕ. В базе данных у меня есть значения 125,23, 458,45, 665,99 (все два десятичных знака)

Когда я показываю k, я получаю значение как

k = 6034.299999999992

Поэтому я ввел BigDecimal и изменил код на ниже

      BigDecimal bd = new BigDecimal(k);
      bd = bd.setScale(2,BigDecimal.ROUND_UP);

Теперь я получаю новую сумму как bd = 6034.30 , что правильно.

Проблема 1

Проблема в том, что когда я использую то же самое в другом месте, я получаю ниже

 k  = 157.3
 bd = 157.31

Должно быть показано bd = 157.30 , так как после добавления вручную я получаю 157,30 .

Любая причина, по которой он отображается как 157,31 .

Проблема 2

Также есть причина, по которой k показывает так много десятичных значений? Ниже приведены различные значения, которые я получаю для двойной переменной k

157.3
67.09
1014.6000000000003
229.06999999999996

. Я не понимаю, иногда она отображает одно десятичное число, иногда - 2 десятичных числа, а в большинстве случаев - 14 десятичных значений.

Любое предложение будет оценено.

5
задан Fahim Parkar 7 June 2012 в 08:36
поделиться