小写金额转成大写算法
2008-01-05 09:37:59 来源:WEB开发网核心提示:小写金额转成大写算法 写了几天了,最终转的还是有问题.请高手帖出算法或代码. --- 我用C++写过一个,代码不在身边. 不过可以提示一下,将金额4位一分,比如1234567可以拆分为1234和567.另外,数字中间有零的话必须写零,但要注重多个零的情况.具体的怎么写你可以问问做财务的人. --- 我以前写过
小写金额转成大写算法
写了几天了,最终转的还是有问题.请高手帖出算法或代码.
---------------------------------------------------------------
我用C++写过一个,代码不在身边.
不过可以提示一下,将金额4位一分,比如1234567可以拆分为1234和567.另外,数字中间有零的话必须写零,但要注重多个零的情况.具体的怎么写你可以问问做财务的人.
---------------------------------------------------------------
我以前写过
说一下思路
先把数字分成整数小数
假如整数100909应该是十万零九百零九
有数组
一个:零,一,二,三,四,五,六,七,八,九
一个:元,角,分,厘
一个:元,十,百,千,万,十,百,千,亿
然后依次去取就可以了
100909
上面会拼出
一十零零九百零九元
你碰到万位补万,两个零变成一个
---------------------------------------------------------------
有个比较笨点的:
判定每个字符,然后条件if(c.equals("1")){.....}
依此类推。。。。
---------------------------------------------------------------
http://www.csdn.net/Develop/Read_Article.asp?Id=15823
---------------------------------------------------------------
从CSDN上整理出五个方案,请参考:
1、(java)
public static String numtochinese(String input){
String s1="零壹贰叁肆伍陆柒捌玖";
String s4="分角整元拾佰仟万拾佰仟亿拾佰仟";
String temp="";
String result="";
if (input==null) return "输入字串不是数字串只能包括以下字符(´0´~´9´,´.´),输入字串最大只能精确到仟亿,小数点只能两位!";
temp=input.trim();
float f;
try{
f=Float.parseFloat(temp);
}catch(Exception e){return "输入字串不是数字串只能包括以下字符(´0´~´9´,´.´),输入字串最大只能精确到仟亿,小数点只能两位!";}
int len=0;
if (temp.indexOf(".")==-1) len=temp.length();
else len=temp.indexOf(".");
if(len>s4.length()-3) return("输入字串最大只能精确到仟亿,小数点只能两位!");
int n1,n2=0;
String num="";
String unit="";
for(int i=0;i<temp.length();i++){
if(i>len+2){break;}
if(i==len) {continue;}
n1=Integer.parseInt(String.valueOf(temp.charAt(i)));
num=s1.substring(n1,n1+1);
n1=len-i+2;
unit=s4.substring(n1,n1+1);
result=result.concat(num).concat(unit);
}
if ((len==temp.length()) ¦ ¦(len==temp.length()-1)) result=result.concat("整");
if (len==temp.length()-2) result=result.concat("零分");
return result;
}
[]
赞助商链接