在网上找了一段代码做了些改动,效果还不错
- function Transform(number)
- {
- number=new String(parseFloat(number).toFixed(2));
- //分离整数与小数
- var num;
- var dig;
- if(number.indexOf(".") == -1)
- {
- num = number;
- dig = "";
- }
- else
- {
- num = number.substr(0,number.indexOf("."));
- dig = number.substr( number.indexOf(".")+1, number.length);
- }
- //转换整数部分
- var i=1;
- var len = num.length;
- var dw2 = new Array("","万","亿");//大单位
- var dw1 = new Array("拾","佰","千");//小单位
- var dw = new Array("","壹","贰","叁","肆","伍","陆","柒","捌","玖");//整数部分用
- var dws = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//小数部分用
- var k1=0;//计小单位
- var k2=0;//计大单位
- var str="";
- for(i=1;i<=len;i++)
- {
- var n = num.charAt(len-i);
- if(n=="0")
- {
- if(k1!=0)
- str = str.substr(1,str.length-1);
- if(str.substr(0,1)!="零" && str.substr(0,1)!="万" && str.substr(0,1)!="亿")
- {
- str="零"+str;
- }
- }
- str = dw[Number(n)].concat(str);//加数字
- if(len-i-1>=0)//在数字范围内
- {
- if(k1!=3)//加小单位
- {
- str = dw1[k1].concat(str);
- k1++;
- }
- else//不加小单位,加大单位
- {
- k1=0;
- var temp = str.charAt(0);
- if(temp=="万" || temp=="亿")//若大单位前没有数字则舍去大单位
- str = str.substr( 1, str.length-1);
- str = dw2[k2].concat(str);
- }
- }
- if(k1==3)//小单位到千则大单位进一
- {
- k2++;
- }
- }
- if(str.substr(str.length-1,str.length)=="零")
- {
- str=str.substr(0,str.length-1);
- }
- //转换小数部分
- var strdig="";
- if(Number(dig)==0)
- {
- strdig="整";
- }
- else
- {
- for(i=0;i<2;i++)
- {
- var n = dig.charAt(i);
- if(i==0 && Number(n)==0)
- {
- strdig="零"
- }
- else
- {
- strdig += dws[Number(n)]+(i==0 ? "角" : "分");//加数字
- }
- }
- }
- str += "元"+strdig;
- return str;
- }