美文网首页
数字用逗号隔开,并保留小数位方法

数字用逗号隔开,并保留小数位方法

作者: 叫我童大侠 | 来源:发表于2018-04-11 15:26 被阅读0次
    var NA = '--'
    
    function format(number, pattern) {
        var num
        if (typeof number === 'string') {
            num = number.replace(/,/g, '')
        } else num = number
        if (num == Number.MIN_VALUE || isNaN(num)) return NA
        var fmtarr = pattern ? pattern.split('.') : [''];
        var precisionLength = 0
        if (fmtarr.length > 0) {
            precisionLength = fmtarr[fmtarr.length - 1].length
        }
        var strarr = num ? Number(Number(num).toFixed(precisionLength)).toString().split('.') : ['0'];
        var retstr = '';
    
        var str = strarr[0];
        var fmt = fmtarr[0];
        var i = str.length - 1;
        var comma = false;
        for (var f = fmt.length - 1; f >= 0; f--) {
            switch (fmt.substr(f, 1)) {
                case '#':
                    if (i >= 0) retstr = str.substr(i--, 1) + retstr;
                    break;
                case '0':
                    if (i >= 0) retstr = str.substr(i--, 1) + retstr;
                    else retstr = '0' + retstr;
                    break;
                case ',':
                    comma = true;
                    retstr = ',' + retstr;
                    break;
            }
        }
        if (i >= 0) {
            if (comma) {
                var l = str.length;
                for (; i >= 0; i--) {
                    retstr = str.substr(i, 1) + retstr;
                    if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr;
                }
            }
            else retstr = str.substr(0, i + 1) + retstr;
        }
    
        retstr = retstr + '.';
        str = strarr.length > 1 ? strarr[1] : '';
        fmt = fmtarr.length > 1 ? fmtarr[1] : '';
        i = 0;
        for (var f = 0; f < fmt.length; f++) {
            switch (fmt.substr(f, 1)) {
                case '#':
                    if (i < str.length) retstr += str.substr(i++, 1);
                    break;
                case '0':
                    if (i < str.length) retstr += str.substr(i++, 1);
                    else retstr += '0';
                    break;
            }
        }
        return retstr.replace(/^,+/, '').replace(/\.$/, '');
    }
    

    调用

    format(value, '#,###')//保留整数
    format(value, '#,###.0')//保留一位
    format(value, '#,###.00')//保留两位
    

    如图:


    fromat.png

    相关文章

      网友评论

          本文标题:数字用逗号隔开,并保留小数位方法

          本文链接:https://www.haomeiwen.com/subject/eqfzhftx.html