java中DecimalFormat的格式化问题

/***功能:将两数相除得到商*@param:chu-除数*@param:bei-被除数*@param:wei-小数点后保留位数[0-4]*@param:flag-是否转... /**
* 功能:将两数相除得到商
* @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不显示。请高手解惑。
展开
 我来答
百度网友9308069
2012-07-03 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1928万
展开全部
0 的含义是 “显示数位”所在位置的数位无论值是多少,必然会被显示。
#的含义是“显示数位,0以缺失显示”Digit, zero shows as absent 不影响数值的情况下,所在位置如果为0就不显示(显示为缺失)。

可能是你的资料翻译错误。
bd9006
2012-07-03 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
Symbol   Location   Localized   Meaning

0      Number    Yes     Digit
#      Number    Yes     Digit, zero shows as absent
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式