将计算好的金额转换成大写,这些功能很是多,下面我改进了一下代码(原文在这里:http://www.cnblogs.com/zsanhong/p/3509464.html)。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; }
测试以下图:测试