在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
有时它会显示一位小数,有时会显示两位小数,而大多数情况下它会显示14位小数值。我不太理解。
如果您有任何建议,我们将不胜感激。