將計算好的金額轉換成大寫,這些功能很是多,下面我改進了一下代碼(原文在這裏: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; }
測試以下圖:測試