码迷,mamicode.com
首页 > Web开发 > 详细

JS将数字转换为中文

时间:2018-06-11 13:46:20      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:round   split   sub   pre   code   ==   log   部分   for   

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JS将数字转换为中文</title>
</head>
<body>
<script>
    // 定义转换函数
    function transform(tranvalue){
        try{
            var i=1;
            var dw2 = new Array("","","亿");//大单位
            var dw1 = new Array("","","");//小单位
            var dw = new Array("","","","","","","","","","");//整数部分用
            //以下是小写转换成大写显示在合计大写的文本框中     
            //分离整数与小数
            var source = splits(tranvalue);
            var num = source[0];
            var dig = source[1];

            //转换整数部分
            var k1=0;//计小单位
            var k2=0;//计大单位
            var sum = 0;
            var str="";
            var len = source[0].length;//整数的长度
            for(i=1;i<=len;i++){
                var n = source[0].charAt(len-i);//取得某个位数上的数字
                var bn = 0;
                if(len-i-1>=0){
                    bn = source[0].charAt(len-i-1);//取得某个位数前一位上的数字
                }
                sum = sum+Number(n);
                if(sum!=0){
                    str = dw[Number(n)].concat(str);//取得该数字对应的大写数字,并插入到str字符串的前面
                    if(n==0)sum = 0;
                }
                if(len-i-1>=0){//在数字范围内
                    if(k1!=3){//加小单位
                        if(bn!=0){
                            str = dw1[k1].concat(str);
                        }
                        k1++;
                    }else{//不加小单位,加大单位
                        k1=0;
                        var temp = str.charAt(0);
                        if(temp=="" || temp=="亿")//若大单位前没有数字则舍去大单位
                            str = str.substr( 1, str.length-1);
                        str = dw2[k2].concat(str);
                        sum = 0;
                    }
                }
                if(k1==3)//小单位到千则大单位进一
                { k2++;}
            }

            //转换小数部分
            var strdig="";
            if(dig!=""){
                var n = dig.charAt(0);
                if(n!=0){
                    strdig += dw[Number(n)]+"";//加数字
                }
                var n = dig.charAt(1);
                if(n!=0){
                    strdig += dw[Number(n)]+"";//加数字
                }
            }
            str += ""+strdig;
        }catch(e){
            return "0元";
        }
        return str;
    }

    //拆分整数与小数
    function splits(tranvalue){
        var value = new Array(‘‘,‘‘);
        temp = tranvalue.split(".");
        for(var i=0;i<temp.length;i++){
            value[i] = temp[i];
        }
        return value;
    }

    // 调用
    var a = 12345678;
    var b = transform(a);
    console.log(b);

</script>
</body>
</html>

 

运行后的结果:

壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元

 

JS将数字转换为中文

标签:round   split   sub   pre   code   ==   log   部分   for   

原文地址:https://www.cnblogs.com/kynewu/p/9166428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!