最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),google下 发现一个还行的方法,所以来此分享下,效果如下input:
JS代码如下:
复制代码
function isString(num) {
return Object.prototype.toString.apply(num) == '[object String]';
}
function fmoney(s, n){
n = n > 0 && n <= 20 ? n : 2;
if(isString(s)) {
s = s * 1;
}
s = parseFloat((s + "")).toFixed(n) + "";
var l = s.split(".")[0].split(""),
r = s.split(".")[1];
t = "";
for(i = 0; i < l.length; i ++ ){
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").join("") + "." + r;
}
复制代码
思路:需要2个参数 一个是要格式化的数字 第二个参数是小数点后保存几位数 默认是2位 然后对拆分 小数点前的数字 和 小数点后的数 对小数点前的数进行循环 如果长度大于3且最大的长度不是3的倍数的话 用逗号隔开。最后加上拆分后的小数点后面的数。