java常用类:BigDecimal

BigDecimal

很多实际应用中需要精确运算,而double是近似值存储,不符合要求,需要借助BigDecimal用来对超过16位有效位的数进行精确的运算

  • 位于 java.math包里

  • 作用:精确计算浮点数

  • 创建方式:BigDecimal bd=new BigDecimal("1.0");

  • BigDecimal一共有4个构造方法:

    String 构造方法是完全可预知的:写入 newBigDecimal("0.1") 将创建一个 BigDecimal,它正好等于预期的 0.1

    通常建议优先使用String构造方法BigDecimal(String)

public class Demo01 {

    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");
        //减法
        BigDecimal r1 = bd1.subtract(bd2);
        System.out.println(r1);
        //加法
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2);
        //乘法
        BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3);
        //除法
        BigDecimal r4 = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"));
        System.out.println(r4);

        //不能整除的情况,会报错java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
        //public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
        // 第一参数表示除数, 第二个参数表示小数点后保留位数,第三个参数表示舍入模式
        //ROUND_HALF_UP 四舍五入
        System.out.println(new BigDecimal("10")
                .divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP));
    }
}
//结果
//0.1
//1.9
//0.90
//1
//3.33
posted @ 2020-12-27 10:43  迪迦是真的  阅读(146)  评论(0)    收藏  举报
//复制代码按钮 //代码行号 //评论