JS将数字转换为中文

<!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>

 

运行后的结果:

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

 

posted @ 2018-06-11 11:58  凯kyne  阅读(19084)  评论(0编辑  收藏  举报