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