
function number2num1(strg)
{
var number = Math.round(strg*100)/100;
//先进行小数位数转换也就是四舍五入由于上面已限定了小数位可不用
number = number.toString(10).split('.');//转换成十进制字符并用小数点隔开
var a = number[0];//取小数点前的值如果有小数点则取它前面的否则取这个数值
if (a.length > 12)//判断是否超过了计算范围
return "数值超出范围!支持的最大数值为 999999999999.99";//退出
var e = "零壹贰叁肆伍陆柒捌玖";
var num1 = "";
var len = a.length-1;
for (var i=0 ; i<=len; i++)//按单个数字逐个进行遍历
num1 += e.charAt(parseInt(a.charAt(i))) + [["圆","万","亿"][Math.floor((len-i)/4)],"拾","佰","仟"][(len-i)%4];
//e.charAt(parseInt(a.charAt(i)))将所选数字对应到相应的大写数组下标并取出大写值
//[["圆","万","亿"][Math.floor((len-i)/4)],"拾","佰","仟"][(len-i)%4]
// ["圆","万","亿"][Math.floor((len-i)/4)]如果小于4位显示 "圆"
// 如果大于4位小于8位则显示 "万"
// 如果大于8位则显示 "亿"
//由上面得到一个新数组 -> 如果小于4位显示 ["圆","拾","佰","仟"]
// 如果大于4位小于8位则显示 ["万","拾","佰","仟"]
// 如果大于8位则显示 ["亿","拾","佰","仟"]
// [(len-i)%4] 得到相应的所属下标 分别得到 "圆","万","亿","拾","佰","仟
//下面处理小数点后的数值
if(number.length==2 && number[1]!="")
{
var a = number[1];//得到.后数值
for (var i=0 ; i<a.length; i++)
num1 += e.charAt(parseInt(a.charAt(i))) + ["角","分"];
}
//以上完成后再进行正则过滤掉一些重复字符
num1 = num1.replace(/零佰|零拾|零仟|零角/g,"零");//全局替换零
num1 = num1.replace(/零{2,}/g,"零");//替换2个以上零为一个零
num1 = num1.replace(/零(?=圆|万|亿)/g,"");//替换零圆,零万,零亿,中的零为空
num1 = num1.replace(/亿万/,"亿");//替换亿万为亿只替换第一次
num1 = num1.replace(/^圆零?/,"");//替换字符串中开始的圆零为空此匹配为非贪婪匹配.适用于.57转换时
//如果要最终数值不为空并且该串结尾不为"分"结尾则加一个"整字"
if(num1!="" && !/分$/.test(num1))
num1 += "整";
return num1;
}
/*
以上是我对海浪的源码的理解不当之处还请指正.
-----------shiwei2006 2007 04-11 11:00--------------
*/
</script>
<!--按键弹起时触发转换事件-->
小写金额:<input type="text" name="aaa" onkeyup="nst(this)"><br>
大写金额:<input type="text" name="bbb" size=80>

