JavaScript 格式化数字、金额、千分位、保留几位小数

JS对货币格式化函数

方法一:保留2位小数

/**
 * 将数值四舍五入(保留2位小数)后格式化成金额形式
 *
 * @param num 数值(Number或者String)
 * @return 金额格式的字符串,如'1,234,567.45'
 * @type String
 */
export function formatCurrency(num) {
            num = num.toString().replace(/[^\d\.-]/g,''); //转成字符串并去掉其中除数字, . 和 - 之外的其它字符。
            if(isNaN(num)) num = "0";  //是否非数字值
            var sign = (num == (num = Math.abs(num)));
            num = Math.floor(num * 100 + 0.50000000001); //下舍入
            var cents = num % 100;  //求余 余数 = 被除数 - 除数 * 商
            cents = (cents < 10) ? "0" + cents : cents; //小于2位数就补齐
            num = Math.floor(num / 100).toString();
            for(var i = 0; i < Math.floor( (num.length - (1+i)) / 3 ); i++ ){ //每隔三位小数分始开隔
                num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
            }
            return (((sign) ? '' : '-' ) + num + '.' + cents);
}


方法二

/**
 * 参数说明
 * @param s:要格式化的数字
 * @param n:保留几位小数
 * */
function formatCurrency(s, n) {
    n = n > 0 && n <= 20 ? n : 2; //n大于0小于等于20时,值为n,否则默认为2
    //将要格式化的数字转换成字符串,并去掉其中匹配的其他字符后返回一个浮点数。
    //把 Number 四舍五入为指定位数的数字后,最终在转换成字符串。
    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
    var numArry = s.split("."), //分隔字符串 0 -> 小数点前面数值 1 -> 小数点后面的尾数
        l = numArry[0].split("").reverse(), //将前面数值再分隔,并反转顺序
        t = "";
    for (var i = 0; i < l.length; i++) { //每隔三位小数分始开隔
        t += l[i] + ( (i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "" );
    }
    //将顺序反转回来,并返回一个字符串
    return t.split("").reverse().join("") + "." + numArry[1];
}

你可能感兴趣的:(JavaScript 格式化数字、金额、千分位、保留几位小数)