JavaScript 千分位算法

https://gist.github.com/748249

v1:

1function commfy0(n){
2    var a = n.toString().split(".");
3    var i = a[0].length%3;
4    var prefix = (a[0].substr(0,i)+a[0].substr(i).replace(/(\d{3})/g,",\n1")).replace(/^,/, "");
5    //var postfix = a[1] ? "."+a[1].replace(/(\d{3})/g, "\n1,").replace(/,\n/, "") : "";
6    return prefix+(a[1]?"."+a[1]:"");
7}

v2:

1var commfy1 = (function(){
2    var re=/(\d{1,3})(?=(?:\d{3})+(?:\n|\.))/g;
3    return function(n){
4        var a=n.toString().split(".");
5        a[0] = a[0].replace(re,"\n1,");
6        return a.join(".");
7    };
8})();

v3:

var commfy2 = (function(){ var re=/\B(?=(?:\d{3})+\n)/g; return function(n){ var a=n.toString().split("."); a[0] = a[0].replace(re,","); return a.join("."); }; })();

参考阅读

\n “千分位”格式化数据的正则 \n 以“千分位”格式化数字–JavaScript \n javascript 按千分位划分数字\n递归方式 \n js数字千分位及取小数点后几位方法测试