js 数字金额的转换 (转)

本文介绍了一种将数字格式化为带千分符的人民币格式,并将其转换为中文大写金额的方法。包括基本的数字格式化、转换为万元单位及中文大写的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. /*数字千分符*/  
  2. function rendererZhMoney(v) {  
  3.     if(isNaN(v)){  
  4.         return v;  
  5.     }  
  6.     v = (Math.round((v - 0) * 100)) / 100;  
  7.     v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v  
  8.             + "0" : v);  
  9.     v = String(v);  
  10.     var ps = v.split('.');  
  11.     var whole = ps[0];  
  12.     var sub = ps[1] ? '.' + ps[1] : '.00';  
  13.     var r = /(\d+)(\d{3})/;  
  14.     while (r.test(whole)) {  
  15.         whole = whole.replace(r, '$1' + ',' + '$2');  
  16.     }  
  17.     v = whole + sub;  
  18.       
  19.     return v;  
  20. }  
  21.   
  22. /*转为以万为单位*/  
  23. function rendererZhMoneyWan(v) {  
  24.     if(isNaN(v)){  
  25.         return v;  
  26.     }  
  27.     v = v*0.0001;//10000;  
  28.     v = formatFloat(v,0);//parseInt(v);  
  29.     rendererZhMoney(v);  
  30.     return v;  
  31. }  
  32.   
  33. /*转换为中文大写金额*/  
  34. function toBigMoney(value){  
  35.     var intFen,i;  
  36.     var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;  
  37.     var isFu =  false; //是否为负数  
  38.   
  39.     if(value.trim==""){  
  40.         return "零";  
  41.     }  
  42.     strCheck = value+".";  
  43.     strArr = strCheck.split(".");  
  44.     strCheck = strArr[0];  
  45.     var len = strCheck.length ;  
  46.     var valueFunc = value+""; //  
  47.     if(len > 12){  
  48.         Ext.MessageBox.alert("提示","数据"+value+"过大,无法处理!");  
  49.         return "";  
  50.     }  
  51.     try{  
  52.         i = 0;  
  53.         strBig = "";  
  54.         if(valueFunc.indexOf("-") != -1){  //如果为负数  
  55.             isFu = true;  
  56.             valueFunc = valueFunc.substring(1,valueFunc.length);  
  57.             value = valueFunc;  
  58.         }  
  59.         var s00="00";  
  60.         var svalue = value+"";  
  61.         var ipos = svalue.indexOf(".") ;  
  62.         var iiLen = svalue.length;  
  63.         if(ipos<0){  
  64.             strFen = svalue+"00";  
  65.         }else if(ipos==iiLen-2){  
  66.             strFen = svalue.substring(0,iiLen-2)+svalue.substring(iiLen-1,iiLen)+"0";  
  67.         }else if(ipos==iiLen-3){  
  68.             strFen = svalue.substring(0,iiLen-3)+svalue.substring(iiLen-2,iiLen);  
  69.         }else{  
  70.             strFen = svalue.substring(0,ipos)+svalue.substring(ipos+1,ipos+3);  
  71.         }  
  72.         intFen = strFen.length;  
  73.         strArr = strFen.split("");  
  74.         while(intFen!=0){  
  75.             i = i+1;  
  76.             switch(i){  
  77.                 case 1:strDW = "分";break;  
  78.                 case 2:strDW = "角";break;  
  79.                 case 3:strDW = "元";break;  
  80.                 case 4:strDW = "拾";break;  
  81.                 case 5:strDW = "佰";break;  
  82.                 case 6:strDW = "仟";break;  
  83.                 case 7:strDW = "万";break;  
  84.                 case 8:strDW = "拾";break;  
  85.                 case 9:strDW = "佰";break;  
  86.                 case 10:strDW = "仟";break;  
  87.                 case 11:strDW = "亿";break;  
  88.                 case 12:strDW = "拾";break;  
  89.                 case 13:strDW = "佰";break;  
  90.                 case 14:strDW = "仟";break;  
  91.             }  
  92.             switch (strArr[intFen-1]){  
  93.                 case "1":strNum = "壹";break;  
  94.                 case "2":strNum = "贰";break;  
  95.                 case "3":strNum = "叁";break;  
  96.                 case "4":strNum = "肆";break;  
  97.                 case "5":strNum = "伍";break;  
  98.                 case "6":strNum = "陆";break;  
  99.                 case "7":strNum = "柒";break;  
  100.                 case "8":strNum = "捌";break;  
  101.                 case "9":strNum = "玖";break;  
  102.                 case "0":strNum = "零";break;  
  103.             }  
  104.   
  105.             strNow = strBig.split("");  
  106.             if((i==1)&&(strArr[intFen-1]=="0")){  
  107.                 strBig = strBig+"整" ;  
  108.             } else if((i==2)&&(strArr[intFen-1]=="0")){  
  109.                 if(strBig!="整")  
  110.                     strBig = "零"+strBig;  
  111.             }else if((i==3)&&(strArr[intFen-1]=="0")){  
  112.                 strBig = "元"+strBig;  
  113.             }else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元")){  
  114.                 strBig = "零"+strBig;  
  115.             }else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){}  
  116.             else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元")){}  
  117.             else if((i==7)&&(strArr[intFen-1]=="0")){  
  118.                 strBig ="万"+strBig;  
  119.             }else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万")){  
  120.                 strBig = "零"+strBig;  
  121.             }else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万")){}  
  122.             else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){}  
  123.             else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")){  
  124.                 strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);  
  125.             }else if(i==11){  
  126.                 if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")){  
  127.                     strBig ="亿"+"零"+strBig.substring(1,strBig.length);  
  128.                 }else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟")){  
  129.                     strBig ="亿"+strBig.substring(1,strBig.length);  
  130.                 }else if((strNow[0]=="万")&&(strNow[2]=="仟")){  
  131.                     strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);  
  132.                 }else if((strNow[0]=="万")&&(strNow[2]!="仟")){  
  133.                     strBig = strNum+strDW+strBig.substring(1,strBig.length);  
  134.                 }else {  
  135.                     strBig = strNum+strDW+strBig;  
  136.                 }  
  137.             }else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿")){  
  138.                 strBig = "零"+strBig;  
  139.             }else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿")){  
  140.             }else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){  
  141.             }else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟")){  
  142.                 strBig = strNum+strDW+strBig.substring(1,strBig.length);  
  143.             }else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟")){  
  144.                 strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);  
  145.             }else{  
  146.                 strBig = strNum+strDW+strBig;  
  147.             }  
  148.             strFen = strFen.substring(0,intFen-1);  
  149.             intFen = strFen.length;  
  150.             strArr = strFen.split("");  
  151.         }   
  152.         if(strBig.substring(0,1)=="元")strBig=strBig.substring(1)  
  153.         if(strBig.substring(0,1)=="零")strBig=strBig.substring(1)   
  154.         if(strBig=="整") {strBig="零元整";}   
  155.         if(true == isFu){ //如果为负数  
  156.             strBig = "负"+strBig;  
  157.         }  
  158.         return strBig;  
  159.     }catch(err){  
  160.         alert(err);  
  161.         return "";  
  162.     }  
  163. }
function CheckAlls(checked) { len = document.frmmain.elements.length; var i=0; for( i=0; i<len; i++) { if (document.frmmain.elements[i].name==&#39;check_node_0&#39;) { if(document.frmmain.elements[i].disabled == false){ document.frmmain.elements[i].checked=(checked==true?true:false); } } } } document.onpropertychange= function() { var a= document.getElementById(&#39;field6163&#39;).value;//取小写金额的值 var numberValue=new String(Math.round(a*100)); // 数字金额 var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字 var String2 = "仟佰拾亿仟佰拾仟佰拾角分"; // 对应单位 var len=numberValue.length; // numberValue 的字符串长度 //alert(len); var Ch1; // 数字的汉语读法 var Ch2; // 数字位的汉字读法 var nZero=0; // 用来计算连续的零值的个数 var String3; // 指定位置的数值 { if(len>15){ alert("超出计算范围"); return fase; } if (numberValue==0){ chineseValue = "零整"; } else { chineseValue=""; } String2 = String2.substr(String2.length-len, len); // 取出对应位数的STRING2的值 for(var i=0; i= 3 ){ Ch1 = ""; Ch2 = ""; nZero = nZero + 1; } else{ Ch1 = ""; Ch2 = String2.substr(i, 1); nZero = nZero + 1; } if( i == (len - 11) || i == (len - 3)){ // 如果该位是亿位或位,则必须写上 Ch2 = String2.substr(i, 1); } } chineseValue =chineseValue +Ch1 + Ch2; } if ( String3 == 0 ){ // 最后一位(分)为0时,加上“整” chineseValue = chineseValue + "整"; } } //alert(chineseValue); document.getElementById(&#39;field6421&#39;).value=chineseValue; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值