解决浮点型商业运算中丢失精度的问题

2020-01-11  本文已影响0人  wbpailxt

先直接给出解决办法:使用入参为String的BigDecimal构造器。
先抛出问题现象:

package com.mmall.test;

import org.junit.Test;
import java.math.BigDecimal;

public class BigDecimalTest {

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

    @Test
    public void test2(){
        BigDecimal b1 = new BigDecimal(0.05);
        BigDecimal b2 = new BigDecimal(0.01);
        System.out.println(b1.add(b2));
    }
}
图片.png

总是不能很好地计算出结果。
解决方案:

package com.mmall.test;

import org.junit.Test;
import java.math.BigDecimal;

public class BigDecimalTest {
    @Test
    public void test3(){
        BigDecimal b1 = new BigDecimal("0.05");
        BigDecimal b2 = new BigDecimal("0.01");
        System.out.println(b1.add(b2));
    }
}
图片.png
上一篇下一篇

猜你喜欢

热点阅读