关于java中浮点计算丢失精度的处理方法
解决方案:使用BigDecimal,并且一定一定要使用BigDecimal的String构造器
案例一
@Test
public void test1(){
System.out.println(0.06 + 0.01);
System.out.println(0.06 - 0.01);
System.out.println(4.015 * 1000);
System.out.println(123.3/100);
}
输出结果
0.06999999999999999
0.049999999999999996
4014.9999999999995
1.2329999999999999
结果不符合预期
案例二
@Test
public void test2(){
BigDecimal b1= new BigDecimal(0.06);
BigDecimal b2= new BigDecimal(0.01);
System.out.println(b1.add(b2));
}
输出结果
0.06999999999999999798772076786690377048216760158538818359375
同样不符合预期
案例三
@Test
public void test3(){
BigDecimal b1= new BigDecimal("0.06");
BigDecimal b2= new BigDecimal("0.01");
System.out.println(b1.add(b2));
}
输出结果:0.07
符合预期