public class PercentUtil {
/**
* 百分比,保留2位有效数字 - 采用四舍五入方式
* @param numFirst
* @param numSecond
* @return
*/
public static String preciseDividion(String numFirst,String numSecond){
BigDecimal dividend = new BigDecimal(numFirst);
BigDecimal divisor = new BigDecimal(numSecond);
BigDecimal result = dividend.divide(divisor, 4,BigDecimal.ROUND_HALF_UP);
//加上%后相当于扩大100倍
return result.movePointRight(2).toString();
}
/**
* 占比计算保留小数的位数方法
* 转成百分数
* 当前数除以总数
* @param num1 ,num2 num1/num2
* @return rate 保留2位小数的
*/
public static String division(int num1,int num2){
String rate="0.00%";
//定义格式化起始位数
String format="0.00";
if(num2 != 0 && num1 != 0){
DecimalFormat dec = new DecimalFormat(format);
rate = dec.format((double) num1 / num2*100)+"%";
while(true){
if(rate.equals(format+"%")){
format=format+"0";
DecimalFormat dec1 = new DecimalFormat(format);
rate = dec1.format((double) num1 / num2*100)+"%";
}else {
break;
}
}
}else if(num1 != 0 && num2 == 0){
rate = "100%";
}
return rate;
}
/**
* 把上面得到的百分比转为字符串类型的小数 保留两位小数
* @author shw
*/
public static BigDecimal perToDecimal(String percent){
String decimal = percent.substring(0,percent.indexOf("%"));
BigDecimal bigDecimal = new BigDecimal(decimal);
bigDecimal.divide(new BigDecimal("100"), 4, BigDecimal.ROUND_HALF_UP);
return bigDecimal;
}
}
DecimalFormat
最新推荐文章于 2023-02-20 17:30:38 发布