java int 求百分比 保证结果综合为1

本文介绍了一种使用Java BigDecimal类进行精确的百分比计算的方法,避免了直接取两位小数导致的数据总和不为100%的问题。通过设置不同的舍入模式,如ROUND_UP,确保了计算结果的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 java int 求百分比 保证结果综合为1

直接取保留两位小数会导致数据之和不为 1 ,

利用BigDecimal 取20 位 (根据需求取精度

1、ROUND_UP

舍入远离零的舍入模式。

在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。

注意,此舍入模式始终不会减少计算值的大小。

 

    public static  String formatProportion(Integer count,Integer totalCount){
        BigDecimal countBigDecimal = new BigDecimal(count);
        BigDecimal totalCountBigDecimal = new BigDecimal(totalCount);
        BigDecimal divide = countBigDecimal.divide(totalCountBigDecimal, 20, BigDecimal.ROUND_UP);
        for (int i=19;i>=2;i--){
            divide=divide.setScale(i,BigDecimal.ROUND_HALF_UP);
            System.out.println(divide);
        }
        return divide.toString();
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值