首頁  >  文章  >  web前端  >  Javascript將數值轉換為金額格式(分隔千分位元和自動增加小數點)

Javascript將數值轉換為金額格式(分隔千分位元和自動增加小數點)

高洛峰
高洛峰原創
2017-01-09 14:37:531372瀏覽

在專案裡碰到需要把類似'450000'的數字轉換為會計記帳所用的格式,'450,000.00',分隔千分位和小數點後不夠兩位數時自動補齊,已下記錄幾種實現的方式

ps:如果不考慮後面的小數點,最快捷的方法:

"12345678".replace(/[0-9]+?(?=(?:([0-9]{3})) +$)/g,function(a){return a+','}); //輸出12 345 678

1.用循環的方式實現

function formatNum(str){
 var newStr = "";
 var count = 0;
 
 if(str.indexOf(".")==-1){
  for(var i=str.length-1;i>=0;i--){
   if(count % 3 == 0 && count != 0){
    newStr = str.charAt(i) + "," + newStr;
   }else{
    newStr = str.charAt(i) + newStr;
   }
   count++;
  }
  str = newStr + ".00"; //自动补小数点后两位
  console.log(str)
 }
 else
 {
  for(var i = str.indexOf(".")-1;i>=0;i--){
   if(count % 3 == 0 && count != 0){
    newStr = str.charAt(i) + "," + newStr; //碰到3的倍数则加上“,”号
   }else{
    newStr = str.charAt(i) + newStr; //逐个字符相接起来
   }
   count++;
  }
  str = newStr + (str + "00").substr((str + "00").indexOf("."),3);
  console.log(str)
 }
}
 
formatNum('13213.24'); //输出13,213.34
formatNum('132134.2'); //输出132,134.20
formatNum('132134'); //输出132,134.00
formatNum('132134.236'); //输出132,134.236

   

2.使用正則(比較不足的是不足的是還是要自己去判斷小數點後面的位數,有更聰明的正規請通知我~)

function regexNum(str){
 var regex = /(\d)(?=(\d\d\d)+(?!\d))/g;
 
 if(str.indexOf(".") == -1){
 
  str= str.replace(regex,',') + '.00';
  console.log(str)
 
 }else{
  var newStr = str.split('.');
  var str_2 = newStr[0].replace(regex,',');
 
  if(newStr[1].length <= 1){
   //小数点后只有一位时
   str_2 = str_2 + &#39;.&#39; + newStr[1] +&#39;0&#39;;
   console.log(str_2)
 
  }else if(newStr[1].length > 1){
   //小数点后两位以上时
   var decimals = newStr[1].substr(0,2);
   var srt_3 = str_2 + &#39;.&#39; + decimals;
   console.log(srt_3)
  }
 }
};
regexNum(&#39;23424224&#39;); //输出2,42,224.00
regexNum(&#39;23424224.2&#39;); //输出2,42,224.20
regexNum(&#39;23424224.22&#39;); //输出2,42,224.22
regexNum(&#39;23424224.233&#39;); //输出2,42,224.23

   

以上就是本文的全部內容,了解更多JavaScript的語法,希望大家多多支援PHP中文網。

更多Javascript將數值轉換為金額格式(分隔千分位和自動增加小數點)相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn