/**
* 功能:将两数相除得到商
* @param:chu-除数
* @param: bei-被除数
* @param: wei-小数点后保留位数[0-4]
* @param: flag-是否转成百分数 false-否 true-是
* @return:百分数
*/
public String getPercentage(int bei, int chu, int wei, boolean flag){
String regx = "", per = "";
if(wei < 0)wei = 0;
switch(wei){
case 0:{ regx="#"; break; }
case 1:{ regx="#.0"; break; }
case 2:{ regx="#.00"; break; }
case 3:{ regx="#.000"; break; }
case 4:{ regx="#.0000"; break; }
default:{ regx="#.##"; break; }
}
if(flag)regx += "%";
DecimalFormat df = new DecimalFormat(regx);
df.setRoundingMode(RoundingMode.HALF_UP); //四舍五入
per = df.format((double)bei / (double)chu) + "";
return per;
}
public static void main(String []args){
StrDeal sd = new StrDeal();
String rex = "";
for(int wei=0; wei<6; wei++){
rex = sd.getPercentage(4, 5, wei, false);
System.out.println("【wei="+wei+"】: "+rex);
}
}
输出:
【wei=0】: 1
【wei=1】: .8
【wei=2】: .80
【wei=3】: .800
【wei=4】: .8000
【wei=5】: 0.8
我想问的是,为何[#.##]时,小数点前带0,而[#.00]却不带0,看API说#作用是:为0不显示,为1-9显示,前导0和追尾0不显示。请高手解惑。