`

金额显示的千位计数等集中常用js

    博客分类:
  • js
js 
阅读更多
function f(s, n) {
    // 保留20位以内的小数位
    n = n > 0 && n <= 20 ? n : 2; 
 
    // 这里 +'' 的含义是把数字转化为字符串, 正则里面的 \. \- 表示小数点和负号
    // 删除掉s中非数字小数点或负号的字符
    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; 
 
    // split('.') 作用以小数点把数字拆分为整数部分和小数部分
    // l 是浮点数的左边部分也就是整数部分,r 为小数部分
    // 比如 s = -123456.789; s.split('.') => ['-123456', '789']
    // split('') 作用是将字符串拆分为单个字符的数组 
    // '-123456.789'.split('.')[0].split('') => ['-','1','2','3','4','5','6']
    // .reverse() 颠倒顺序 ['-','1','2','3','4','5','6'].reverse() => ['6','5','4','3','2','1','-']
    var l = s.split(".")[0].split("").reverse(), 
        r = s.split(".")[1]; // '789'
 
    // .indexOf() 判断字符串中是否包含某个字符串, 如果不包含则返回-1
    // 此处判断数字中是否有负号 有负号就说明整数部分数字的长度要减一
    // 上例 l.length = 7 但是有负号 所以 len = 6
    var len = (s.indexOf("-")!= -1) ? l.length - 1 : l.length;
 
    t = "";
    // 
    for (i = 0; i < len; i++) 
    {
        // l = ['6','5','4','3','2','1','-']
        // 此处通过对 i + 1 做余数运算来判断插入逗号的位置
        // (i + 1) % 3 == 0 每三位插入一个逗号
        // (i + 1) != len 数字最开头不用打逗号
        // 结果:t = '654,321'
        t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != len ? "," : ""); //没看懂呀   并且这两个条件 举个例子
 
    }
 
    // 有负号就在开头加上负号
    // 然后把顺序颠倒回来 把小数部分连接回来
    // '-123,456.789'
    return ((s.indexOf("-")!= -1) ? "-" : "") + t.split("").reverse().join("") + "." + r; //这个返回 举个例子 没懂呀
 
}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics