javascript 将数字(金额)转成大写

将计算好的金额转换成大写,这些功能非常多,下面我改进了一下代码(原文在这里:http://www.cnblogs.com/zsanhong/p/3509464.html)。

 

/**
         * _SetNumToUppercase 将数字转换大写
         * @param {number} num=1 - 参数num为必选数值类型
         * @param {Boolean} flag - 参数flag是一个可选的Boolean类型参数 有一种发票需要直接输出,如:100,转换大写就是壹佰零拾零圆零角零分,这是传入true即可
         * */
        function _SetNumToUppercase (num,flag) {
            num = num + '';
            if(num === 'undefined' || isNaN(Number(num)) ||  !/^(0|[1-9]\d*)(\.\d+)?$/.test(num))
                return '数据:{' + num + '} 格式有误';
            var unit = '万仟佰拾亿仟佰拾万仟佰拾圆角分', 
            uppercase = '零壹贰叁肆伍陆柒捌玖',
            point = num.indexOf('.'),str = '';
            if(num.split('.')[0].length > 13  || (num.split('.')[1] && num.split('.')[1].length > 2))
                return'数据:{' + num + '}整数位数的个数最多13个,小数位数的个数最多2个';
            num =  num+ '00';
            if(point >= 0) {
                num = num.substring(0, point) + num.substr(point+1, 2);    
            }
            unit =  unit.substr(unit.length - num.length);
            for (var i=0; i < num.length; i++) {
                str += uppercase.charAt(num.charAt(i)) + unit.charAt(i);
            }
            // 默认转换
            if(!flag) 
                str = str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|圆)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^圆零?|零分/g, "").replace(/圆$/g, "圆整");
            return str;
        }

测试如下图:

 

posted on 2017-03-13 20:53  随机名称  阅读(295)  评论(0编辑  收藏  举报

导航