小写金额转成大写算法

王朝other·作者佚名  2008-05-31
宽屏版  字体: |||超大  

小写金额转成大写算法

写了几天了,最终转的还是有问题.请高手帖出算法或代码.

---------------------------------------------------------------

我用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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有