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