在Java中,我已经定义k作为 double k=0.0;
BigDecimal的错误
我从数据库中获取数据和添加相同的使用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位十进制值不同的值。
任何建议,将不胜感激。
你为什么不定义一个单独的函数在这个答案?: http://stackoverflow.com/a/8911683/744859 有了这个四舍五入,像和定义k作为BigDecimal的,因为人们认为在评论你会有一个干净和高效的代码。 – 2012-01-18 15:40:47
@Jav_Rock:我使用的功能,但这里要说明一下,我只给出代码...让我知道柜面的任何进一步的细节需要... – 2012-01-18 15:47:00