版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting_sxw/article/details/84783155
@Test
public void test1(){
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
}
输出结果:
0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999
@Test
public void test2(){
BigDecimal b1=new BigDecimal(0.05);
BigDecimal b2=new BigDecimal(0.01);
System.out.println(b1.add(b2));
}
输出结果:
0.06000000000000000298372437868010820238851010799407958984375
@Test
public void test3(){
BigDecimal b1=new BigDecimal("0.05");
BigDecimal b2=new BigDecimal("0.01");
System.out.println(b1.add(b2));
}
输出结果:
0.06
结论:使用BigDecimal的
public BigDecimal(String val) {
this(val.toCharArray(), 0, val.length());
}
这个构造器 解决精度问题,传递的参数是String类型
简单封装:https://github.com/shaoxiaowen/Utils/blob/master/BigDecimalUtil.java