有关人民币金额小写转大写的代码。

public static String toBig(double value)...{
if(value==0) return "零圆";
String r="";
char[] a=...{'拾','佰','仟'}; //段内位置表示
char[] b=...{'万','亿'}; //段名表示
char[] c=...{'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};//数字表示
long midVal = (long)(value*100); //转化成整形
String valStr=String.valueOf(midVal); //转化成字符串
String head=valStr.substring(0,valStr.length()-2);//取整数部分
String rail=valStr.substring(valStr.length()-2);//取小数部分
String suffix=""; //小数部分转化的结果
//处理小数点后面的数
if(rail.equals("00"))...{ //如果小数部分为0
suffix="整";
}else...{
suffix=c[rail.charAt(0)-'0']+"角"+c[rail.charAt(1)-'0']+"分"; //否则把角分转化出来
}
System.out.println("head:"+head);
System.out.println("suffix:"+suffix);
//处理小数点前面的数
int zeronum=0;
if(head.length()>0 )...{
char[] ch=head.toCharArray();//字符串
for(int i=0;i<ch.length;i++)...{
int p=(ch.length-1-i)%4;
int v=(ch.length-1-i)/4;

if(ch[i]=='0')...{ //数字为0
zeronum++; 
if(p==0 && v>0)...{ //如果到万位,而且个位为0;
r+=b[v-1];
zeronum =0;
}
}else...{
if(zeronum > 0)...{//上1个数字为0,之后遇到非0的数字
r+=c[0];
zeronum=0;
}
r+=c[ch[i]-'0'];//数字不为0;
if(p>0)r+=a[p-1];
if(p==0 && v>0)...{//万位
r+=b[v-1];
}
}
// System.out.println(r);
}
r+="圆";
}
return r+suffix;
} 
355

被折叠的 条评论
为什么被折叠?



