算法-实现千位分隔符

73 阅读1分钟

JavaScript实现千位分隔符的几种方式

一、将数字转换为字符数组

function numFormat(num) {
    num=num.toString().split('.');
    var arr=num[0].split('').reverse();
    var res = [];
    for(var i = 0, len=arr.length; i < len; i++) {
        if(i%3==0&&i!=0) {
            res.push(',');
        }
        res.push(arr[i]);
    }
    res.reverse();
    if(num[1]) {
        res=res.join('').concat('.'+num[1]);
    }else{
        res=res.join('');
    }
    return res;
}

二、使用JS自带的函数 toLocaleString

var a=1234567894532;
var b=673439.4542;

console.log(a.toLocaleString());  // "1,234,567,894,532"
console.log(b.toLocaleString());  // "673,439.454"  (小数部分四舍五入了)

要注意的是这个函数在没有指定区域的基本使用时,返回使用默认的语言环境和默认选项格式化的字符串,所以不同地区数字格式可能会有一定的差异。最好确保使用 locales 参数指定了使用的语言。

测试发现小数部分会根据四舍五入只留下三位。

三、使用正则表达式和replace函数

function numFormat(num) {
  // 先提取整数部分
  var res = num.toString().replace(/\d+/, function (n) {
    return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
      return $1 + ',';
    });
  });
  return res;
}

var a=1234567894532;
var b=673439.4542;
console.log(numFormat(a)); // "1,234,567,894,532"
console.log(numFormat(b)); // "673,439.4542"