zoukankan      html  css  js  c++  java
  • javascript实现金额大写转换函数

    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;
    }
    document.write(transform("111")); //壹佰壹拾壹元 
    
  • 相关阅读:
    hdu 5965 扫雷
    51nod 1441 士兵的数字游戏 (素数处理
    51nod 1453抽彩球
    51nod 1255 字典序最小的子序列
    codeforces 948A
    Splay 伸展树 bzoj3224 bzoj3223
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest C(gym/101142 C)
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest F(gym/101142 F)
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest G(gym/101142 G)
    Educational Codeforces Round 32 E 巨型背包
  • 原文地址:https://www.cnblogs.com/sntetwt/p/3411020.html
Copyright © 2011-2022 走看看