BigDecimal常用的加减乘除算法、比较大小、保存两位小数点

话不多说,先记录一下。

BigDecimal coins = new BigDecimal("0");

BigDecimal one = new BigDecimal("1");

BigDecimal two = new BigDecimal("2");

coins =  coins.add( two  );  //coins 加 2
System.out.println(  coins.doubleValue());  //输出为2.0

coins =  coins.subtract( one  );  //coins 减 1
System.out.println(  coins.doubleValue());  //输出为1.0

coins =  coins.multiply( two  );  //coins 乘以 2
System.out.println(  coins.doubleValue());  //输出为2.0

int  i = coins .compareTo(BigDecimal.ZERO) ;  //判断coins是否大于0  
int  k = coins .compareTo( one ) ;//如果 i =0 说明相等;i < 0 说明 coins小于 one; i > 0 说明coins > one
coins = coins.setScale(2,BigDecimal.ROUND_HALF_UP) //保存两位小数点

除法就比较坑:

bigdecimal类型做除法运算时,结果为整数或有限小数时候不存在问题,若结果无法整除,为无限小数时报错

错误代码:

  Bigdecimal  bd = num1.divide(c).setScale(6,ROUND_HALF_UP); 

错误提示: Non-terminating decimal expansion; no exact representable decimal result"

错误翻译: 无穷小数扩张;没有精确的十进制结果。

错误原因: 暂时不详

代码改进:

  BigDecimal bd = num.divide(c,6,ROUND_HALF_UP);

你可能感兴趣的:(BigDecimal常用的加减乘除算法、比较大小、保存两位小数点)