600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > JS 数字金额用逗号隔开(数字格式化及将数字金额变成中文大写金额

JS 数字金额用逗号隔开(数字格式化及将数字金额变成中文大写金额

时间:2023-12-13 16:19:46

相关推荐

JS 数字金额用逗号隔开(数字格式化及将数字金额变成中文大写金额

————————————————将数字金额变成中文大写金额 ————————————————

这个是我在网上找的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; } }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。