js

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

2017-09-21  本文已影响24人  女王陛下的喵

JS对货币格式化函数

方法一:保留2位小数
/**
 * 将数值四舍五入(保留2位小数)后格式化成金额形式
 *
 * @param num 数值(Number或者String)
 * @return 金额格式的字符串,如'1,234,567.45'
 * @type String
 */
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++ ){ //每隔三位小数分始开隔
        //4 ==> 三位小数加一个分隔符,
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    }
    return (((sign) ? '' : '-' ) + num + '.' + cents);
}

//调用方法
formatCurrency(1234567.75);
/**
 * 参数说明
 * @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];
}
上一篇下一篇

猜你喜欢

热点阅读