java的BigDecimal操作

1.保留两位小数不进位

public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("1234.8888");
        String bigDecimal1s = bigDecimal1.setScale(2, RoundingMode.DOWN).toPlainString();
        System.out.println(bigDecimal1s);
    }

结果:结果

2.比较大小

if (cspMarketOrderInfoPayment.getConfirmMoney() == null || cspMarketOrderInfoPayment.getConfirmMoney().compareTo(BigDecimal.ZERO) <= 0) {
            throw new CustomException("收款金额需要大于0!");
        }
        
if (bean.getOqty().compareTo(BigDecimal.ZERO) > 0) {
                    throw new CustomException("该商品实际有库存或商品正在出库中,不允许对 商品名称、外部商品编码、最小单位的规格描述、副单位的规格描述、副单位启用状态 进行修改!");
                }

3.集合遍历+结果相加

List<CspInventoryInfo> allocationDetailsList = inventoryInfoMapper.selectInventoryAllocationDetailsByLotid(lotid);
        BigDecimal oqtyNum = allocationDetailsList.stream()
                .filter(i -> i.getOqty() != null)
                .map(CspInventoryInfo::getOqty)
                .reduce(BigDecimal.ZERO, BigDecimal::add);

4.向上取整保留4位小数(最后一位会进一)

public static void main(String[] args) {
        BigDecimal reviewRate = new BigDecimal("0.0000");
        reviewRate = new BigDecimal("123")
                .divide(new BigDecimal("9999"), 4, BigDecimal.ROUND_UP);
//        BigDecimal bigDecimal = reviewRate.setScale(2, BigDecimal.ROUND_DOWN);
        System.out.println(reviewRate);
    }


complaintRate = new BigDecimal(String.valueOf(workOrderNumber)).divide(new BigDecimal(String.valueOf(orderInfoNumber)), 10, BigDecimal.ROUND_DOWN)
                        .multiply(new BigDecimal("100"));
                dataCockpitWorkOrderResult.setComplaintSummaryRate(complaintRate.setScale(5, BigDecimal.ROUND_UP));

5.除法+乘法

BigDecimal targetReachValue = temperatureCoverageRate.divide(targetValue, 4, BigDecimal.ROUND_UP).multiply(new BigDecimal("100"));

6.保留两位小数,舍弃小数位的0

String woDisposalFee = baseDataStorageCapacityBean.getWoDisposalFee();
        if (StringUtils.isNotBlank(woDisposalFee) && isNumeric(woDisposalFee)) {
            woDisposalFee = new BigDecimal(woDisposalFee).multiply(grossMargin)
                    .add(new BigDecimal(woDisposalFee)).setScale(2, RoundingMode.DOWN).stripTrailingZeros().toPlainString();
        }

7.保留两位小数,不进位(进阶版)

BigDecimal price = new BigDecimal(value.toString());
                            price = price.multiply(productSaleParameterVo.getGrossMargin())
                                    .add(price)
                                    .setScale(2, RoundingMode.DOWN);
                            DecimalFormat decimalFormat = new DecimalFormat("#.##");
                            mapResult.put(key, decimalFormat.format(price));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值