Java常用api_ BigDecimal的基本运算
构造方法
BigDecimal bgInt = new BigDecimal(int i);
BigDecimal bgDouble = new BigDecimal(double d);//不建议会存在精度丢失问题,若必须建议转String。
BigDecimal bgStr = new BigDecimal(String str);
加减乘除
注意:BigDecimal参数 进行运算时只能对BigDecimal 参数运行
BigDecimal a = new BigDecimal("2.3");
BigDecimal b = new BigDecimal("3.2");
加: System.out.println("a + b =" + a.add(b));
减: System.out.println("a - b =" + a.subtract(b));
乘: System.out.println("a * b =" + a.multiply(b));
除: System.out.println("a / b =" + a.divide(b));
除法可以传三个参数,仅传一个参数时若除不尽则会报错
a.divide(b, int scale, int roundingMode)
第一参数表示除数, 同样为BigDecimal 类型。
第二个参数表示小数点后保留位数,
第三个参数表示舍入模式,只有在作除法运算或四舍五入时才用到舍入模式,
第三个参数这里我们可以用到java.math.RoundingMode 几个参数。
RoundingMode.CEILING:取右边最近的整数
RoundingMode.DOWN:去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点靠近的方向取整
RoundingMode.FLOOR:取左边最近的正数
RoundingMode.HALF_DOWN:五舍六入,负数先取绝对值再五舍六入再负数
RoundingMode.HALF_UP:四舍五入,负数原理同上
RoundingMode.HALF_EVEN:这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入
System.out.println("a / b =" + a.divide(b,3,RoundingMode.HALF_UP));
控制台打印结果,表示a/b保留三位小数,舍入方式为四舍五入
a / b =0.719
取余
BigDecimal a = new BigDecimal("5");
BigDecimal b = new BigDecimal("3");
BigDecimal[] bigs=a.divideAndRemainder(b);
System.out.println("商"+bigs[0]);//商
System.out.println("余数"+bigs[1]);//余数
//控制台输出结果
商1
余数2
a.divideAndRemainder(b);方法接收另一个BigDecimal 对象作为参数,该参数即为除数,返回一个BigDecimal数组,返回数组中包含两个元素,第一个元素为两数相除的商,第二个元素为余数。