关于java精度丢失问题

1.下面这段代码预期的结果的小数点后应该只有两位,可是执行后的结果和想象中不一样。

float total=0;
for(int i=0;i<36;i++) {
total+=9.9f;
}
System.out.println(total);

上面代码执行得到的结果:

精度丢失对于一些敏感数据很是要命,所以我们在进行计算的时候可以处理一下。

我是用BigDecimal处理的

BigDecimal sum=new BigDecimal(Float.toString(0));
Float.toString(9.9f);
for(int i=0;i<36;i++) {
sum=sum.add(new BigDecimal(Float.toString(9.9f)));
}
System.out.println(sum);

结果和预期一样

 

posted @ 2017-10-27 14:51  追逐蓝天的小菜鸟  阅读(1129)  评论(0)    收藏  举报