Ошибка BigDecimal

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

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

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)

Когда я отображаю 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)

Ваш ответ на вопрос