function Chinese(num) //
{
if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return "Number is wrong!";} var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("圆","拾","佰","仟","萬","億","点","");
var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = ""; for(var i=a[0].length-1; i>=0; i--)
{
switch(k)
{
case 0 : re = BB[7] + re; break;
case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
re = BB[4] + re; break;
case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if(k%4 == 2 && a[0].charAt(i+2) != 0 && a[0].charAt(i+1) == 0) re = AA[0] + re;
if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
} if(a.length>1) //加上小数部分(如果有小数部分)
{
re += BB[6];
for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];
}
return re;
}
{
if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return "Number is wrong!";} var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("圆","拾","佰","仟","萬","億","点","");
var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = ""; for(var i=a[0].length-1; i>=0; i--)
{
switch(k)
{
case 0 : re = BB[7] + re; break;
case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
re = BB[4] + re; break;
case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if(k%4 == 2 && a[0].charAt(i+2) != 0 && a[0].charAt(i+1) == 0) re = AA[0] + re;
if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
} if(a.length>1) //加上小数部分(如果有小数部分)
{
re += BB[6];
for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];
}
return re;
}
圆放到后面了。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY>
<FORM METHOD=POST ACTION="">
<INPUT TYPE="text" NAME="num">
<INPUT TYPE="button" name="test" value="金额转化为大写汉字" onclick="alert(Chinese(document.all.num.value));">
</FORM>
</BODY>
</HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Chinese(num) //
{
if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return "Number is wrong!";} var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("圆","拾","佰","仟","萬","億","点","");
var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = ""; for(var i=a[0].length-1; i>=0; i--)
{
switch(k)
{
case 0 : re = BB[7] + re; break;
case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
re = BB[4] + re; break;
case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if(k%4 == 2 && a[0].charAt(i+2) != 0 && a[0].charAt(i+1) == 0) re = AA[0] + re;
if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
} if(a.length>1) //加上小数部分(如果有小数部分)
{
re = re.substring(0,re.length-1);
re += BB[6];
for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];
re += BB[0];
}
return re;
}//-->
</SCRIPT>
* 人民币金额大小写转化
*/function ChangeToBig(value)
{
var intFen,i;
var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;
if (value == null) //数据非法时提示,并返回空串
{
strErr = "数据"+value+"非法!"
alert(strErr);
return "";
}
if(value==0)
return "零";
strCheck = value+".";
strArr = strCheck.split(".");
strCheck = strArr[0];
if(strCheck.length>12) //数据大于等于一万亿时提示无法处理
{
strErr = "数据"+value+"过大,无法处理!"
alert(strErr);
return "";
}
try
{
i = 0;
strBig = "";
intFen = value*100; //转换为以分为单位的数值
strFen = intFen.toString();
strArr = strFen.split(".");
strFen = strArr[0];
intFen = strFen.length; //获取长度
strArr = strFen.split("");//将各个数值分解到数组内
while(intFen!=0) //分解并转换
{
i = i+1;
switch(i) //选择单位
{
case 1:strDW = "分";break;
case 2:strDW = "角";break;
case 3:strDW = "元";break;
case 4:strDW = "拾";break;
case 5:strDW = "佰";break;
case 6:strDW = "仟";break;
case 7:strDW = "万";break;
case 8:strDW = "拾";break;
case 9:strDW = "佰";break;
case 10:strDW = "仟";break;
case 11:strDW = "亿";break;
case 12:strDW = "拾";break;
case 13:strDW = "佰";break;
case 14:strDW = "仟";break;
}
switch (strArr[intFen-1]) //选择数字
{
case "1":strNum = "壹";break;
case "2":strNum = "贰";break;
case "3":strNum = "叁";break;
case "4":strNum = "肆";break;
case "5":strNum = "伍";break;
case "6":strNum = "陆";break;
case "7":strNum = "柒";break;
case "8":strNum = "捌";break;
case "9":strNum = "玖";break;
case "0":strNum = "零";break;
}
//处理特殊情况
strNow = strBig.split("");
//分为零时的情况
if((i==1)&&(strArr[intFen-1]=="0"))
strBig = "整";
//角为零时的情况
else if((i==2)&&(strArr[intFen-1]=="0"))
{ //角分同时为零时的情况
if(strBig!="整")
strBig = "零"+strBig;
}
//元为零的情况
else if((i==3)&&(strArr[intFen-1]=="0"))
strBig = "元"+strBig;
//拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元"))
strBig = "零"+strBig;
//拾-仟中一位为零且其前一位(元以上)也为零的情况时跨??
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
{}
//拾-仟中一位为零且其前一位是元且为零的情况时跨过
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元"))
{}
//当万为零时必须补上万字
else if((i==7)&&(strArr[intFen-1]=="0"))
strBig ="万"+strBig;
//拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万"))
strBig = "零"+strBig;
//拾?颍蛑幸晃晃闱移淝耙晃唬ㄍ蛞陨希┮参愕那榭鍪笨绻?
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万"))
{}
//拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
{}
//万位为零且存在仟位和十万以上时,在万仟间补零
else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
//单独处理亿位
else if(i==11)
{
//亿位为零且万全为零存在仟位时,去掉万补为零
if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
strBig ="亿"+"零"+strBig.substring(1,strBig.length);
//亿位为零且万全为零不存在仟位时,去掉万
else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟"))
strBig ="亿"+strBig.substring(1,strBig.length);
//亿位不为零且万全为零存在仟位时,去掉万补为零
else if((strNow[0]=="万")&&(strNow[2]=="仟"))
strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
//亿位不为零且万全为零不存在仟位时,去掉万
else if((strNow[0]=="万")&&(strNow[2]!="仟"))
strBig = strNum+strDW+strBig.substring(1,strBig.length);
else
strBig = strNum+strDW+strBig;
}
//拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿"))
strBig = "零"+strBig;
//拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿"))
{}
//拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
{}
//亿位为零且不存在仟万位和十亿以上时去掉上次写入的??
else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟")) strBig = strNum+strDW+strBig.substring(1,strBig.length); //亿位为零且存在仟万位和十亿以上时,在亿仟万间补零 else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟")) strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length); else strBig = strNum+strDW+strBig;
strFen = strFen.substring(0,intFen-1);
intFen = strFen.length;
strArr = strFen.split("");
}
return strBig;
}catch(err){
return ""; //若失败则返回原值
}
}