BigDecimal常用方法

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
 
posted @ 2022-06-06 16:49  YanSss  阅读(100)  评论(0编辑  收藏  举报