————————————————将数字金额变成中文大写金额 ————————————————
这个是我在网上找的javascript的方法,可以将数字金额转换成大写的中文汉字,我测试过了,在我的程序中使用了,而且很好用。忘记是哪位仁兄写的了,在此表示感谢了。我本人不是javascript的高手,只能用别人的了。 这个方法可以直接拷贝到页面中调用,没有问题!给那些遇到同样问题的兄弟们!/*
功能:将货币数字(阿拉伯数字)(小写)转化成中文(大写)
参数:Num为字符型,小数点之后保留两位,例:Arabia_to_Chinese("1234.06")
说明:1.目前本转换仅支持到 拾亿(元) 位,金额单位为元,不能为万元,最小单位为分
2.不支持负数
*/
functionnumtochinese(Num)
{
for(i=Num.length-1;i>=0;i--)
{
Num = Num.replace(",","")//替换tomoney()中的“,”
Num = Num.replace(" ","")//替换tomoney()中的空格
}
Num = Num.replace("¥","")//替换掉可能出现的¥字符
if(isNaN(Num))
{
//验证输入的字符是否为数字
alert("请检查小写金额是否正确");
return;
}
//---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
part = String(Num).split(".");
newchar = "";
//小数点前进行转化
for(i=part[0].length-1;i>=0;i--)
{
if(part[0].length > 10){ alert("位数过大,无法计算");return"";}//若数量超过拾亿单位,提示
tmpnewchar = ""
perchar = part[0].charAt(i);
switch(perchar){
case"0": tmpnewchar="零"+ tmpnewchar ;break;
case"1": tmpnewchar="壹"+ tmpnewchar ;break;
case"2": tmpnewchar="贰"+ tmpnewchar ;break;
case"3": tmpnewchar="叁"+ tmpnewchar ;break;
case"4": tmpnewchar="肆"+ tmpnewchar ;break;
case"5": tmpnewchar="伍"+ tmpnewchar ;break;
case"6": tmpnewchar="陆"+ tmpnewchar ;break;
case"7": tmpnewchar="柒"+ tmpnewchar ;break;
case"8": tmpnewchar="捌"+ tmpnewchar ;break;
case"9": tmpnewchar="玖"+ tmpnewchar ;break;
}
switch(part[0].length-i-1)
{
case0: tmpnewchar = tmpnewchar +"元";break;
case1:if(perchar!=0)tmpnewchar= tmpnewchar +"拾";break;
case2:if(perchar!=0)tmpnewchar= tmpnewchar +"佰";break;
case3:if(perchar!=0)tmpnewchar= tmpnewchar +"仟";break;
case4: tmpnewchar= tmpnewchar +"万";break;
case5:if(perchar!=0)tmpnewchar= tmpnewchar +"拾";break;
case6:if(perchar!=0)tmpnewchar= tmpnewchar +"佰";break;
case7:if(perchar!=0)tmpnewchar= tmpnewchar +"仟";break;
case8: tmpnewchar= tmpnewchar +"亿";break;
case9: tmpnewchar= tmpnewchar +"拾";break;
}
newchar = tmpnewchar + newchar;
}
//小数点之后进行转化
if(Num.indexOf(".")!=-1)
{
if(part[1].length > 2)
{
// alert("小数点之后只能保留两位,系统将自动截段"); 大龙注:原作者这块设计的太闹心;
part[1] = part[1].substr(0,2)
}
for(i=0;i<part[1].length;i++)
{
tmpnewchar = ""
perchar = part[1].charAt(i)
switch(perchar){
case "0": tmpnewchar= "零"+ tmpnewchar ; break;
case "1": tmpnewchar= "壹"+ tmpnewchar ; break;
case "2": tmpnewchar= "贰"+ tmpnewchar ; break;
case "3": tmpnewchar= "叁"+ tmpnewchar ; break;
case "4": tmpnewchar= "肆"+ tmpnewchar ; break;
case "5": tmpnewchar= "伍"+ tmpnewchar ; break;
case "6": tmpnewchar= "陆"+ tmpnewchar ; break;
case "7": tmpnewchar= "柒"+ tmpnewchar ; break;
case "8": tmpnewchar= "捌"+ tmpnewchar ; break;
case "9": tmpnewchar= "玖"+ tmpnewchar ; break;
}
if(i==0)tmpnewchar =tmpnewchar + "角";
if(i==1)tmpnewchar = tmpnewchar + "分";
newchar = newchar + tmpnewchar;
}
}
//替换所有无用汉字
while(newchar.search( "零零") != -1)
newchar = newchar.replace( "零零", "零");
newchar = newchar.replace( "零亿", "亿");
newchar = newchar.replace( "亿万", "亿");
newchar = newchar.replace( "零万", "万");
newchar = newchar.replace( "零元", "元");
newchar = newchar.replace( "零角", "");
newchar = newchar.replace( "零分", "");
if(newchar.charAt(newchar.length-1) == "元"|| newchar.charAt(newchar.length-1) == "角")
newchar = newchar+ "整"
returnnewchar;
}
————————————————JS 数字金额用逗号隔开(数字格式化)————————————————
例如:
12345格式化为12,345.00
12345.6格式化为12,345.60
12345.67格式化为 12,345.67
只留两位小数。
回来后写了个格式化函数。可以控制小数位数,自动四舍五入。代码如下:
[javascript]view plain copyfunctionfmoney(s,n){ n=n>0&&n<=20?n:2; s=parseFloat((s+"").replace(/[^\d\.-]/g,"")).toFixed(n)+""; varl=s.split(".")[0].split("").reverse(),r=s.split(".")[1]; t=""; for(i=0;i<l.length;i++){ t+=l[i]+((i+1)%3==0&&(i+1)!=l.length?",":""); } returnt.split("").reverse().join("")+"."+r; } 调用:fmoney("12345.675910", 3),返回12,345.676
还原函数:
[javascript]view plain copyfunctionrmoney(s){ returnparseFloat(s.replace(/[^\d\.-]/g,"")); } 示例(可保存一下代码为html文件,运行查看效果):
[html]view plain copy<SCRIPT> functionfmoney(s,n){ n=n>0&&n<=20?n:2; s=parseFloat((s+"").replace(/[^\d\.-]/g,"")).toFixed(n)+""; varl=s.split(".")[0].split("").reverse(),r=s.split(".")[1]; t=""; for(i=0;i<l.length;i++){ t+=l[i]+((i+1)%3==0&&(i+1)!=l.length?",":""); } returnt.split("").reverse().join("")+"."+r; } functionrmoney(s){ returnparseFloat(s.replace(/[^\d\.-]/g,"")); } functiong(id){ returndocument.getElementById(id); } window.onload=function(){ varnum,txt=g("txt"),txt2=g("txt2"),btn=g("btn"),btn2=g("btn2"),span=g("span"); btn.onclick=function(){ num=parseInt(g("num").value); txt.value=fmoney(txt.value,num); txt2.value=fmoney(txt2.value,num); }; btn2.onclick=function(){ num=parseInt(g("num").value); span.innerHTML="=" +fmoney(rmoney(txt.value)+rmoney(txt2.value),num); }; }; </SCRIPT> 小数点位数: <selectid="num"> <optionvalue="2">2</option> <optionvalue="3">3</option> <optionvalue="4">4</option> <optionvalue="5">5</option> </select> <inputtype="text"id="txt"value="12345.675910">+ <inputtype="text"id="txt2"value="1223"><spanid="span"></span> <br> <inputtype="button"id="btn"value="格式化"> <inputtype="button"id="btn2"value="相加">
附:
[javascript]view plain copy/* *formatMoney(s,type) *功能:金额按千位逗号分割 *参数:s,需要格式化的金额数值. *参数:type,判断格式化后的金额是否需要小数位. *返回:返回格式化后的数值字符串. */ functionformatMoney(s,type){ if(/[^0-9\.]/.test(s)) return"0"; if(s==null||s=="") return"0"; s=s.toString().replace(/^(\d*)$/,"$1."); s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1"); s=s.replace(".",","); varre=/(\d)(\d{3},)/; while(re.test(s)) s=s.replace(re,"$1,$2"); s=s.replace(/,(\d\d)$/,".$1"); if(type==0){//不带小数位(默认是有小数位) vara=s.split("."); if(a[1]=="00"){ s=a[0]; } } returns; } /* *通用DateAdd(interval,number,date)功能:实现javascript的日期相加功能. *参数:interval,字符串表达式,表示要添加的时间间隔.参数:number,数值表达式,表示要添加的时间间隔的个数.参数:date,时间对象. *返回:新的时间对象.varnow=newDate();varnewDate=DateAdd("day",5,now); *author:devinhua(从○开始)update:-5-520:35 */ functionDateAdd(interval,number,date){ if(date==null) return""; switch(interval){ case"day": date=newDate(date); date=date.valueOf(); date+=number*24*60*60*1000; date=newDate(date); returndate; break; default: return""; break; } }