首页 > 技术文章 > 关于java精度丢失问题

Flying-Newbie 2017-10-27 14:51 原文

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);

结果和预期一样

 

推荐阅读