话不多说,先记录一下。
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);