笔者总结了计算两个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))); }
计算两个数值的同比和环比百分比并保留两位小数
最新推荐文章于 2024-08-05 04:28:12 发布