JavaScript 把数字转换为货币类型

由于项目中有很多金额显示字段,故整理了一个公共JS,供大家学习和改正。

/**
 * 根据传入的数值转换成货币显示格式
 * 不能传入的字符形如 “abc  000  123.  .123”
 */
function formatNum(s){
    s=(Math.round(s*100)/100).toString();
    //判断参数是否有值
    if( s == '' || s == null || s == '0'){
        return '0.00';
    }else if(( 0 < s && s < 10 ) || ( -10 < s && s < 0 )){//判断参数是否是个位数,除0外(因为0==''成立)
        if(s.indexOf('.') == -1){
            s = s + '.00';
        }else if(s.indexOf('.') == s.length - 2){
            s = s + '0';
        }
        return s;
    }else{//处理二位数以上的格式
        s += '';
        if(!/^(\+|-)?\d+(\.\d+)?$/.test(s)){ throw (new Error(-1,'lt isn\'t Number ! '));}
        var a = s.match(/^(\+|-)?(\d[^\.]+)(\.\d+)?$/),b = a[2],c = '';
        for(var i = b.length - 3;i > -3;i = i - 3){
            c = ',' + b.substring(i ,i + 3) + c;
        }
        var f = ((a[1]||"") + c.substr(1) + (a[3]||""));
        if(f.indexOf('.') == -1){
            f = f + '.00';
        }else if( f.indexOf('.') == f.length-2){
            f = f + '0';
        }
        return f;
    }
}

 

posted @ 2013-09-04 22:29  精神领袖  阅读(509)  评论(0编辑  收藏  举报