用Java计算BigDecimal bigDecimal = bdRfpSumMoneyList1.getAmount(); BigDecimal bigDecimal1 = bdRfpSumMoneyList2.getAmount();这两个值的同比增长率
时间: 2023-04-01 12:04:23 浏览: 123
这个问题可以回答。同比增长率可以用以下公式计算:(当前值-去年同期值)/去年同期值*100%。因此,同比增长率为:(bigDecimal.subtract(bigDecimal1)).divide(bigDecimal1, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) + "%。
相关问题
BigDecimal totalAmount = BigDecimal.valueOf(0); for (ShoppingCart shoppingCart : shoppingCarts) { BigDecimal amount = shoppingCart.getAmount(); Integer number = shoppingCart.getNumber(); totalAmount += amount * number; }
这段代码有一个问题,因为 `totalAmount` 是 `BigDecimal` 类型,不能使用运算符 `+` 直接相加 `amount * number` 的结果。应该使用 `BigDecimal` 提供的 `add()` 方法进行 BigDecimal 类型的加法运算。
正确的代码应该是:
```java
BigDecimal totalAmount = BigDecimal.valueOf(0);
for (ShoppingCart shoppingCart : shoppingCarts) {
BigDecimal amount = shoppingCart.getAmount();
Integer number = shoppingCart.getNumber();
totalAmount = totalAmount.add(amount.multiply(BigDecimal.valueOf(number)));
}
```
这里使用了 `multiply()` 方法进行 BigDecimal 类型的乘法运算,得到 `amount * number` 的结果。然后使用 `add()` 方法将结果累加到 `totalAmount` 中。
BigDecimal amount = transactionDetailRespDto.getAmount(); 把amount 变成负值
如果想把 BigDecimal 类型的 amount 变成负值,可以使用 BigDecimal 的 negate 方法,例如:
```
amount = amount.negate();
```
这里的 negate 方法会将 amount 取反,即如果原来的 amount 是正值,那么取反后就是负值;如果原来的 amount 是负值,那么取反后就是正值。需要注意的是,negate 方法返回的是一个新的 BigDecimal 对象,原来的 amount 对象不会被修改,因此需要将取反后的值重新赋值给 amount,例如上面的代码中的赋值语句。
阅读全文