又是项目遇到的问题,在网上找了几个后,发现或多或少都有些问题,最终反复实践后感觉这套代码还不错,另外在其基础上,又加了一个钱币符号的功能,此外如果传入空值,则直接返回“-”。

/*
 * 方法: 转换金额
 * 使用场景: 所有金额方面
 * 使用方法: parseFormatNum(8888888,'¥');
 * 参数: mark: 如果传了mark, 则返回对应的钱币符号: ¥8,888,888
*/
function parseFormatNum(num,mark){

    if( typeof(num) == 'undefined' || num == null || num == '' ){
        return '-';
    }

    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num)){
        num = "0";
    }
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents < 10){
        cents = "0" + cents;
    }
    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));
    }
    if( typeof(mark) != 'undefined' ){
        return mark + (((sign)?'':'-') + num + '.' + cents);
    }else{
        return (((sign)?'':'-') + num + '.' + cents);
    }

}