金額與數字轉化常用實用幾個JS方法
阿新 • • 發佈:2019-02-11
財務系統中常用到金額與數字轉化的處理,這裡包括以下幾個方法:1、去空格2、頁面控制元件的金額與數字之間的轉換3、一般金額與數字之間的轉換4、將數字金額轉化為漢字金額。
//在引用頁面,可以採用document.forms[0].field1.value.trim()引用去空格 String.prototype.trim = function(){ return this.replace(/(^/s*)|(/s*$)/g, ""); } //將1,234,567.00轉換為1234567.00 function moneyToNumFiled(obj) { var num=obj.value.trim(); var ss=num.toString(); if(ss.length==0){ return ""; } num=new Number(ss.replace(/,/g, "")); if(!/^(/+|-)?/d+(/.[0-9]{1,2})?$/.test(num)){ alert("必須是數字型,切小數位最多保留兩位"); obj.value=""; obj.focus(); return ; } obj.value=num; } //將1,234,567.00轉換為1234567.00 function moneyToNumValue(val) { var num=val.trim(); var ss=num.toString(); if(ss.length==0){ return "0"; } return ss.replace(/,/g, ""); } //用於頁面控制 //將1234567.00轉換為1,234,567.00 function numToMoneyField(obj) { var ss=obj.value.toString().trim(); if(ss.length==0){ return ""; } var num=new Number(ss.replace(/,/g, "")); if(!/^(/+|-)?/d+(/.[0-9]{1,2})?$/.test(num)){ alert("必須是數字型,切小數位最多保留兩位"); obj.value=""; obj.focus(); return; } if(num<0){ obj.value = '-'+outputDollars(Math.floor(Math.abs(num)-0) + '') + outputCents(Math.abs(num) - 0); }else{ obj.value = outputDollars(Math.floor(num-0) + '') + outputCents(num - 0); } } //將1234567.00轉換為1,234,567.00 function numToMoneyValue(val) { var ss=val.toString().trim(); if(ss.length==0){ return ""; } var num=new Number(ss.replace(/,/g, "")); if(!/^(/+|-)?/d+(/.[0-9]{1,2})?$/.test(num)){ alert("必須是數字型,切小數位最多保留兩位"); return ""; } if(num<0){ return '-'+outputDollars(Math.floor(Math.abs(num)-0) + '') + outputCents(Math.abs(num) - 0); }else{ return outputDollars(Math.floor(num-0) + '') + outputCents(num - 0); } } function Chinese(num){ //如輸入123.45可得到 壹百貳拾叄元肆角伍分 var AA = new Array("零","壹","貳","叄","肆","伍","陸","柒","捌","玖"); var BB = new Array("","拾","百","千","萬","億","",""); var CC = 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(re.trim().length>0){ re+="元"; } if(a.length>1){ //加上小數部分(如果有小數部分) re += BB[6]; for(var i=0; i1) break; re += AA[a[1].charAt(i)] + CC[i]; } } return re; } //格式化輸入數字,並保留指定位小數 //amount為原數字,_pow_為需要保留小數位數 function powAmount(amount,_pow_) { var amount_bak=amount; var base=10; if(isNaN(amount)){ alert(amount+'必須為數字'); return; } if(isNaN(_pow_)){ alert(_pow_+'必須為數字'); return; } amount = Math.round( ( amount - Math.floor(amount) ) *Math.pow(base,_pow_)); amount=amount<10 ? '.0' + amount : '.' + amount amount=Math.floor(amount_bak)+amount; return amount; }