BigDecimal加减乘除计算

 

add(BigDecimal value);  //加法

subtract(BigDecimal value);  //减法

multiply(BigDecimal value);  //乘法

divide(BigDecimal value);  //除法

 


BigDecimal a = new BigDecimal("5.5");
BigDecimal b = new BigDecimal("2.5");
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的绝对值=" + a.abs());
// 保留两位小数
System.out.println("a%b=" + a.divide(b, 2, BigDecimal.ROUND_HALF_UP));

 

BigDecimal去掉小数点后的零

new BigDecimal("").stripTrailingZeros().toPlainString()

 

BigDecimal c = new BigDecimal("96.000");
System.out.println("c:" + c );
System.out.println("去掉小数点后的零:" + c.stripTrailingZeros().toPlainString());

 

BigDecimal 中的 divide

public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode)

 

第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式。

 

BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2 
BigDecimal.ROUND_UP:直接进位,比如1.21如果保留1位小数,得到的就是1.3 
BigDecimal.ROUND_HALF_UP:四舍五入,2.35保留1位,变成2.4
BigDecimal.ROUND_HALF_DOWN:四舍五入,2.35保留1位,变成2.3 后边两种的区别就是如果保留的位数的后一位如果正好是5的时候,一个舍弃掉,一个进位。

2、BigDecimal.setScale()方法用于格式化小数点

setScale(1)表示保留一位小数,默认用四舍五入方式 
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍

 

BigDecimal大小比较

BigDecimal比较大小方法:

使用compareTo方法。

int flag = bigdemical1.compareTo(bigdemical2)
  • flag = -1,表示bigdemical1小于bigdemical2;
  • flag = 0,表示bigdemical1等于bigdemical2;
  • flag = 1,表示bigdemical1大于bigdemical2;

实际应用中直接跟0比较就可以了,

  • 大于0就是bigdemical大于bigdemical1
  • 等于0就是bigdemical等于bigdemical1
  • 小于0就是bigdemical小于bigdemical1