Java常用类:BigDecimal类

Java常用类:BigDecimal类


BigDecimal

  • 位于 java.math 包中

  • 作用:精确计算浮点数

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

  • 常用方法:

    • add();
    • subtract();
    • multiply();
    • divide();
  • 示例:

    import java.math.BigDecimal;
    
    public class Demo01 {
    
        public static void main(String[] args) {
    
            //未使用BigDecimal
            double d1 = 1.0;
            double d2 = 0.9;
            System.out.println(d1-d2);
    
            double result = (1.4-0.5)/0.9;
            System.out.println(result);
    
            System.out.println("----------");
    
            //使用BigDecimal
            BigDecimal bd1 = new BigDecimal("1.0");//一定要用字符串:精确
            BigDecimal bd2 = new BigDecimal("0.9");
            //减法
            BigDecimal r1 = bd1.subtract(bd2);//subtract();是BigDecimal的减法
            System.out.println("bd1-bd2="+r1);
            //加法
            BigDecimal r2 = bd1.add(bd2);//add();是BigDecimal的加法
            System.out.println("bd1+bd2="+r2);
            //乘法
            BigDecimal r3 = bd1.multiply(bd2);//multiply();是BigDecimal的乘法
            System.out.println("bd1*bd2="+r3);
            //除法
            BigDecimal r4 = bd2.divide(bd1);//divide();是BigDecimal的除法
            System.out.println("bd2/bd1="+r4);
    
            //BigDecimal的 (1.4-0.5)/0.9
            BigDecimal result1 = new BigDecimal("1.4")
                    .subtract(new BigDecimal("0.5"))
                    .divide(new BigDecimal("0.9"));
            System.out.println("(1.4-0.5)/0.9="+result1);
    
        }
    
    }
    

    输出

    0.09999999999999998
    0.9999999999999999
    ----------
    bd1-bd2=0.1
    bd1+bd2=1.9
    bd1*bd2=0.90
    bd2/bd1=0.9
    (1.4-0.5)/0.9=1
    

除法拓展:

进行除法运算时,如果不能准确的计算出结果时需要指定保留的位数和取舍方式。

  • 除法divide(BigDecimal bd,int scal,RoundingMode mode);

  • 参数 scal :指定精确到小数点后几位

  • 参数 mode :

    • 指定小数部分的取舍模式,通常采用四舍五入的模式
    • 取值为RoundingMode.HALF_UP
  • 示例:

    import java.math.BigDecimal;
    import java.math.RoundingMode;
    
    public class Demo02 {
    
        public static void main(String[] args) {
    
            BigDecimal result = new BigDecimal("10")
                    .divide(new BigDecimal("3"), 2, RoundingMode.HALF_UP);
            System.out.println("10/3="+result+"(四舍五入,保留两位小数)");
    
        }
    
    }
    

    输出

    10/3=3.33(四舍五入,保留两位小数)
    
上一篇:安装Linux和Windows的双系统


下一篇:BigDecimal精确到几位以及四舍五入