Ошибка 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 десятичных значений.
Любое предложение будет оценено.