计算两个数值的同比和环比百分比并保留两位小数

该博客介绍了如何使用Java的BigDecimal类精确计算两个整数或小数的百分比变化,采用了四舍五入保留两位小数的策略。提供了一个计算百分比的通用方法,适用于不为零的整数和BigDecimal类型的数据。

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

笔者总结了计算两个int类型的数值的同比百分比和计算两个含小数的同比百分比,只需要将参数在传值时传入BigDecimal类型的即可,采用的是四舍五入保留2位的策略,如果其他的策略可自行更改。
/**
 * 计算两个值的百分比
 * @param i1
 * @param i2
 * @return
 */
public static BigDecimal calPercent(int i1,int i2) {
    if(i1 !=0 && i2==0){
        return new BigDecimal(100);
    }else if(i1 ==0 && i2==0){
        return new BigDecimal(0);
    }
    BigDecimal percent = new BigDecimal(i1-i2).divide(new BigDecimal(i2),2,RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
    return percent;
}

/**
 * 计算两个BigDecimal的百分比
 * @param i1
 * @param i2
 * @return
 */
public static BigDecimal calPercent(BigDecimal i1,BigDecimal i2) {
    if(i1.compareTo(BigDecimal.ZERO)!=0 && i2.compareTo(BigDecimal.ZERO)==0){
        return new BigDecimal(100);
    }else if(i1.compareTo(BigDecimal.ZERO) ==0 && i2.compareTo(BigDecimal.ZERO)==0){
        return new BigDecimal(0);
    }
    BigDecimal percent = i1.subtract(i2).divide(i2,2,RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
    return percent;
}

public static void main(String[] args) {
    System.out.println(calPercent(4,3));
    System.out.println(calPercent(new BigDecimal(100),new BigDecimal(200)));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力终会有回报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值