使用BigDecimal对浮点数进行精确计算

问题

Java的简单类型不能够精确的对浮点数进行运算。比如:

package day05;

public class YzcCalTest {
    public static void main(String[] args) {
        double a=1;
        double b=0.9;
        double c=a-b;
        System.out.println(a+"-"+b+"="+c);
    }
}

控制台截图


image.png

解决方案

使用JDK提供的BigDecimal对浮点数进行精确计算。
重构后的代码如下:

package day05;

import java.math.BigDecimal;

public class YzcCalTest {
    public static void main(String[] args) {
        double a=1;
        double b=0.9;
        BigDecimal a2 = new BigDecimal(a+"");
        BigDecimal b2 = new BigDecimal(b+"");
        BigDecimal c2 = a2.subtract(b2);
        double c=c2.doubleValue();
        System.out.println(a+"-"+b+"="+c);
    }
}

控制台截图


image.png

参考资料

https://blog.csdn.net/huiwenjie168/article/details/6998140

你可能感兴趣的:(使用BigDecimal对浮点数进行精确计算)