JAVASCRIPT-货币千分位,并且保留两位小数

  /**
   * @param {*} money[输入的money]
   * @param {string} [货币符号,sysmbol='¥']
   * @param {number} [小数点位数,places=2]
   * @returns undefined
   */
  function dealMoney(money, sysmbol = '¥', places = 2) {
    const zero = `${sysmbol}0.00`;
    if (isNaN(money) || money === '') return zero;
 
     if(money && money != null){
         money = `${money}`;
         let left=money.split('.')[0]; // 小数点左边部分
         let right=money.split('.')[1]; // 小数点右边
         // 保留places位小数点,当长度没有到places时,用0补足。
         right = right ? (right.length >= places ? '.' + right.substr(0, places) : '.' + right + '0'.repeat(places - right.length)) : ('.' + '0'.repeat(places));
         var temp = left.split('').reverse().join('').match(/(\d{1,3})/g); // 分割反向转为字符串然后最多3个,最少1个,将匹配的值放进数组返回
         return (Number(money) < 0 ? '-' : '') + sysmbol + temp.join(',').split('').reverse().join('') + right; // 补齐正负号和货币符号,数组转为字符串,通过逗号分隔,再分割(包含逗号也分割)反向转为字符串变回原来的顺序
     } else if (money === 0) {
         return zero;
     } else {
         return zero;
     }
 }
调用:
dealMoney(1); // "¥1.00"
dealMoney(89783, '$', 3); // "$89,783.000"
dealMoney('guo', '$', 3); // "$0.00"

 

posted @ 2020-07-13 17:48  木易锅巴  阅读(159)  评论(0编辑  收藏