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

笔者总结了计算两个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)));
}
在Python中,计算销售额的同比(年同比增长率)和环比(月度或季度增长率)通常需要对历史销售数据进行分析。这里是一个简单的步骤说明: 1. **获取数据**:假设你有一个包含日期和销售额的列表或Pandas DataFrame,其中每一行代表一次销售记录。 ```python import pandas as pd sales_data = { 'date': [...], # 日期列 'sales': [...], # 销售额列 } df_sales = pd.DataFrame(sales_data) ``` 2. **整理数据**:确保数据按日期排序并计算每个月或每个季度的总销售额。 ```python df_sales['month'] = df_sales['date'].dt.to_period('M') # 计算月份 monthly_sales = df_sales.groupby('month')['sales'].sum() ``` 3. **计算同比**:如果想要计算同比,可以先找到上一年同一个月的销售额,然后用当前月的销售额除以上个月的销售额减一。 ```python def calc_annual_growth_rate(prev_month_sales): return (monthly_sales.iloc[-1] / prev_month_sales) - 1 if prev_month_sales is not None else None prev_month_sales = monthly_sales.shift(1) # 提取上个月销售额 annual_growth_rates = monthly_sales.apply(calc_annual_growth_rate) ``` 4. **计算环比**:类似地,通过比较当前月与前一个月的销售额。 ```python def calc_monthly_growth_rate(prev_month_sales): return (monthly_sales.iloc[-1] / prev_month_sales) - 1 if prev_month_sales is not None else None monthly_growth_rates = monthly_sales.pct_change() * 100 # 使用百分比表示 ``` 5. **结果处理**:可能需要将NaN替换为0或其他合适的值,并处理负增长的情况。 现在,`annual_growth_rates`和`monthly_growth_rates`分别包含了销售额的同比环比增长率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力终会有回报

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

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

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

打赏作者

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

抵扣说明:

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

余额充值