javascript 將數字(金額)轉成大寫

將計算好的金額轉換成大寫,這些功能很是多,下面我改進了一下代碼(原文在這裏:http://www.cnblogs.com/zsanhong/p/3509464.html)。html

 

/**
         * _SetNumToUppercase 將數字轉換大寫
         * @param {number} num=1 - 參數num爲必選數值類型
         * @param {Boolean} flag - 參數flag是一個可選的Boolean類型參數 有一種發票須要直接輸出,如:100,轉換大寫就是壹佰零拾零圓零角零分,這是傳入true便可
         * */
        function _SetNumToUppercase (num,flag) {
            num = num + '';
            if(num === 'undefined' || isNaN(Number(num)) ||  !/^(0|[1-9]\d*)(\.\d+)?$/.test(num))
                return '數據:{' + num + '} 格式有誤';
            var unit = '萬仟佰拾億仟佰拾萬仟佰拾圓角分', 
            uppercase = '零壹貳叄肆伍陸柒捌玖',
            point = num.indexOf('.'),str = '';
            if(num.split('.')[0].length > 13  || (num.split('.')[1] && num.split('.')[1].length > 2))
                return'數據:{' + num + '}整數位數的個數最多13個,小數位數的個數最多2個';
            num =  num+ '00';
            if(point >= 0) {
                num = num.substring(0, point) + num.substr(point+1, 2);    
            }
            unit =  unit.substr(unit.length - num.length);
            for (var i=0; i < num.length; i++) {
                str += uppercase.charAt(num.charAt(i)) + unit.charAt(i);
            }
            // 默認轉換
            if(!flag) 
                str = str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(萬|億|圓)/g, "$1").replace(/(億)萬|壹(拾)/g, "$1$2").replace(/^圓零?|零分/g, "").replace(/圓$/g, "圓整");
            return str;
        }

測試以下圖:測試

相關文章
相關標籤/搜索