js 格式化数字,格式化金额:

一、进行四舍五入法

number_format(number, decimals, dec_point, thousands_sep)  => {

    /*  * 参数说明:

    * number:要格式化的数字

    * decimals:保留几位小数

    * dec_point:小数点符号

    * thousands_sep:千分位符号

    * */

    number = (number + '').replace(/[^0-9+-Ee.]/g, '');

    let n = !isFinite(+number) ? 0 : +number,

        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),

        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,

        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,

        s = '',

        toFixedFix = function (n, prec) {

            let k = Math.pow(10, prec);

            return '' + Math.ceil(n * k) / k;

        };

    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');

    let re = /(-?\d+)(\d{3})/;

    while (re.test(s[0])) {

        s[0] = s[0].replace(re, "$1" + sep + "$2");

    }

    if ((s[1] || '').length < prec) {

        s[1] = s[1] || '';

        s[1] += new Array(prec - s[1].length + 1).join('0');

    }

    return s.join(dec);

}

let num=number_format(163156651.058, 2, ".", ",");

console.info(num)//163156651.06

二、直接舍弃

number_format(number, decimals, dec_point, thousands_sep) => {

        /** 参数说明:

        * number:要格式化的数字

        * decimals:保留几位小数

        * dec_point:小数点符号

        * thousands_sep:千分位符号

        * */

        number = (number + '').replace(/[^0-9+-Ee.]/g, '');

        let n = !isFinite(+number) ? 0 : +number,

            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),

            sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,

            dec = (typeof dec_point === 'undefined') ? '.' : dec_point,

            s = '',

            toFixedFix = function (n, prec) {

                let k = Math.pow(10, prec);

                return '' + Math.floor(n * k) / k;

            };

        s = (prec ? toFixedFix(n, prec) : '' + Math.floor(n)).split('.');

        let re = /(-?\d+)(\d{3})/;

        while (re.test(s[0])) {

            s[0] = s[0].replace(re, "$1" + sep + "$2");

        }

        if ((s[1] || '').length < prec) {

            s[1] = s[1] || '';

            s[1] += new Array(prec - s[1].length + 1).join('0');

        }

        return s.join(dec);

    }

let num = number_format(23452345234.089, 2, ".", ",");

console.info(num);//23452345234.08


想要整理更多的碎片知识,扫码关注下面的公众号,让我们在哪里接着唠!

你可能感兴趣的:(js 格式化数字,格式化金额:)