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;
        }

测试如下图:

 

转载于:https://www.cnblogs.com/Math-random/p/6544994.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值