Java -Bigdecimal

概念: BigDecimal是一种数据结构,适用于精度较高的数据存储和计算,一般企业大型数据常用BigDecimal来进行存储和处理。
它是一种Java封装好的对象型数据结构
在理解时可以把它和String数据类型对比,他们许多操作都已被封装好
用创建好的bigdecimal对象调用封装方法进行加减乘除对比等基础操作
//        初始化定义
//        构造函数
//        int
        BigDecimal inta = new BigDecimal(1);
//        double
        BigDecimal doubleb = new BigDecimal(2.0);
//        String
        BigDecimal Stringc = new BigDecimal("3.0");
//        long
        BigDecimal longd = new BigDecimal(Long.valueOf(4));
        //转换
        BigDecimal assignment = BigDecimal.valueOf(6);
//        基础数学运算(加减乘除对比)
//        加
        System.out.println(assignment.add(inta));
//        减
        System.out.println(assignment.subtract(Stringc));
//        乘
        System.out.println(assignment.multiply(longd));
//        除
        System.out.println(assignment.divide(longd));
//        对比
        System.out.println("等于:"+assignment.compareTo(BigDecimal.valueOf(6)));
        System.out.println("大于:"+assignment.compareTo(longd));

//_________________________________________________________________________________


7
3.0
24
1.5
等于:0
大于:1




【注意事项】

  • Bigdecimal作为一种对象型数据结构,在使用时要先进行判空操作,以防出现空指针问题
  • 在进行除法时,要确定精度问题,取后几位小数,否则会出现无线余数问题,报错如下
java.lang.ArithmeticException:Non-terminating decimal expansion;no exact representable decimal result

 具体解决办法如下

BigDecimal divide(BigDecimal divisor,int scale,MathContext mc);

 再进行除法运算时使用上述函数,即传入一个精度参数scale,再传入一个舍入模式,一般常用四舍五入模式ROUND_HALF_UP

【 常用方法集合】

a.compareTo(b)//比较大小,ab均不能为null,否则会报空指针
BigDecimal b = a.setScale(0, ROUND_HALF_UP);//保留0位小数,四舍五入
a.toString() //转换成字符串
a.doubleValue() //转换成双精度数
a.floatValue() //转换成单精度数
a.longValue() //转换成长整数
a.intValue() //转换成整数
a.abs()  //返回a的绝对值,精度不变。

 实际开发中多会要求精度问题并四舍五入,上述加减乘除方法有重写版本,在参数中加int值即可,具体方法链接如下

 https://mp.csdn.net/console/editor/html/105996363

猜你喜欢

转载自blog.csdn.net/qq_36766417/article/details/105988765