Talk is cheap. Show me your code

JS 格式化数字(每三位加逗号)

问题描述:

处理数字,从各位开始,每三位添加一个逗号

function formatNum() {
  // ...  
}

formatNum(123)        // "123"
formatNum(123.456)    // "123.456"
formatNum(1234.56)    // "1,234.56"
formatNum(1234567)    // "1,234,567"

 

解决方案:

/**
 * 数字每三位加一个逗号
 * @param {String | Number} v 原始数字
 * @return {String} 格式化的数字
 */
export const formatNum = (v = 0) => {
  const n = Number(v);
  if (!n) { return 0; }
  
  let counter = 0;
  // 处理小数点
  const int = n.toString().split('.');
  const num = int[0].split('');
  const result = int[1] ? [`.${int[1]}`] : [];
  for (let i = num.length - 1; i >= 0; i--) {
    counter++;
    result.unshift(num[i]);
    if (!(counter % 3) && i !== 0) {
      result.unshift(',');
    }
  }
  return result.join('');
};

 


草率了,原来 JS 的 number 新增了 toLocaleString() 方法,可以直接格式化数字:

const number = 3500;
console.log(number.toLocaleString()); // Displays "3,500" 

 

posted @ 2021-06-30 14:34  Wise.Wrong  阅读(1654)  评论(0编辑  收藏  举报