BigDecimal解决商业计算精度丢失问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/fighting_sxw/article/details/84783155