数字转换为人民币大写

题目:要求输入一个低于10位的数字,输出这串数字的人民币大写。

废话少说,上代码:

<script>
        //定义单位数组
        var unitArr = ['元', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '亿'];
        //定义汉字大写
        var numArr = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
        //将输入的字符串转换为整数
        var n = parseInt(window.prompt('input'));
        //将整数n转换为字符串,为何不直接m=window.promt('input'),是为了排除输入的数为小数
        var m = String(n);
        //预留空串,拼接结果
        var result = '';
        //取到输入数字的位数
        var len = m.length;

        //将单个数字转换为汉字大写
        function toText(indext) {
            return numArr[indext];
        }
        //主函数
        function transform() {
            //判断输入的是否是数字
            if (isNaN(n)) {
                console.log('请输入数字');
            }
            //如果是数字,是否超出10位数
            else if (len > 9) {
                console.log('您的余额没那么多,请不要白日做梦!');
            }
            //判断是否为0
            else if (n == 0) {
                console.log('对不起,您的余额为零,请及时存款!');
            }
            //如果输入的时候小于10位的非零数字,则进行一下循环
            else {
                for (var i = len - 1; i >= 0; i--) {
                    //将转换后的汉字与单位拼接
                    result += toText(m[len - 1 - i]) + unitArr[i];
                }
                //排除“壹拾元”与“壹拾萬元”的读法,正常人读“拾元”与“十萬元”
                if ((len == 6 && m[0] == 1) || (len == 2 && m[0] == 1)) {
                    //剪切字符串,把前面的“壹”去掉,就是正常读法
                    result = result.slice(1);
                }
                //循环,将不正常的读法“零拾”“零佰”“零仟”“零萬”以及“零零”用正常的读法替换
                while (result.search('零零') != -1 || result.search('零拾') != -1 || result.search('零佰') != -1 || result.search('零仟') != -1 || result.search('零萬') != -1) {
                    result = result.replace('零拾', '零');
                    result = result.replace('零佰', '零');
                    result = result.replace('零仟', '零');
                    result = result.replace('零萬', '萬');
                    result = result.replace('零零', '零');
                }
                //漏掉的两个非正常读法~·~
                result = result.replace('亿萬', '亿');
                result = result.replace('零元', '元');
                console.log(result)
            }
        }
        transform();
    </script>

如有错误地方,敬请指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值