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>

 

運行後的結果:html

壹仟貳佰叄拾肆萬伍仟陸佰柒拾捌元
相關文章
相關標籤/搜索