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);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值