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

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

作者: 叫我童大侠 | 来源:发表于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