计算两个int类型数据相除得到的百分比,保存两位小数,如果两位小数是0则取到有数字为止,如0.0000007%,不是转成
0.00%,而是转成0.0000007%
import java.math.BigDecimal; import java.text.DecimalFormat; /** * 处理数据的工具类 * 公用的处理数据的方法写在这里 * Created by shw on 2018/5/4 0004. */ public class DataHandleUtil { /** * 占比计算保留小数的位数方法 * 转成百分数 * 当前数除以总数 * @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; } }