0
点赞
收藏
分享

微信扫一扫

工具类系列---【Bigdecimal的加减乘除】

1.加法

//付款账户+转账金额
FinanceAccount transferAccount = financeAccountService.getById(accountRecords.getTransferAccountId());
BigDecimal subtract = transferAccount.getTotal().add(accountRecords.getAmount());//"1000.00"+"2000.00"
transferAccount.setTotal(subtract);//"3000.00"

2.减法

//收款账户-转账金额
FinanceAccount account = financeAccountService.getById(accountRecords.getAccountId());
BigDecimal add = account.getTotal().subtract(accountRecords.getAmount());//"2000.00"-"1000.00"
account.setTotal(add);//"1000.00"

3.乘法

//用double类型初始化BigDecimal对象
BigDecimal numA = new BigDecimal(0.05);
BigDecimal numB = new BigDecimal(0.06);
System.out.println("numA + numB = " + numA.multiply(numB));
//用double类型和int类型初始化BigDecimal对象。(作乘法运算时得到的只是一个近似值)
BigDecimal numC = new BigDecimal(100);
BigDecimal numD = new BigDecimal(0.05);
System.out.println("numC + numD = " + numC.multiply(numD));
//用字符串类型初始化BigDecimal对象。(作乘法运算时得到的是精确值,推荐使用)
BigDecimal strA = new BigDecimal("100");
BigDecimal strB = new BigDecimal("0.05");
System.out.println("strA + strB = " + strA.multiply(strB));

打印结果:
numA + numB = 0.00300000000000000005551115123125782085820576136538628584587058372823258067807472571075777523219585418701171875
numC + numD = 5.00000000000000027755575615628913510590791702270507812500
strA + strB = 5.00

4.除法

//当月日均收益,注意divide的参数有三个
BigDecimal monthTotal = "-91.28"
int daysOfMonth = DateUtil.getDaysOfMonth(new Date());//30天
BigDecimal divisor = new BigDecimal(daysOfMonth).setScale(2, BigDecimal.ROUND_HALF_UP);//"30.00"
BigDecimal monthAvgRevenue = monthTotal.divide(divisor,2, RoundingMode.HALF_UP);//"-91.29"/"30.00"
System.out.println("monthAvgRevenue = " + monthAvgRevenue);//"-3.04"

5.取绝对值

BigDecimal add = "-91.23";
BigDecimal abs = add.abs();//"91.23"

6.取反

BigDecimal add = "91.23";
BigDecimal abs = add.negate();//"-91.23"
举报

相关推荐

0 条评论