js 阿拉伯數字轉中文大寫貨幣
阿新 • • 發佈:2019-01-04
//方式一 function zh(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "資料非法"; var unit = "仟佰拾億仟佰拾萬仟佰拾圓角分", str = ""; n += "00"; var p = n.indexOf('.'); if (p >= 0) n = n.substring(0, p) + n.substr(p+1, 2); unit = unit.substr(unit.length - n.length); for (var i=0; i < n.length; i++) str += '零壹貳叄肆伍陸柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i); return str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(萬|億|圓)/g, "$1").replace(/(億)萬|壹(拾)/g, "$1$2").replace(/^圓零?|零分/g, "").replace(/圓$/g, "圓整"); } //方式二 function zh(money) { if(money.indexOf('-1') != -1 ){ money = money.substring(1); } //漢字的數字 var cnNums = new Array('零', '壹', '貳', '叄', '肆', '伍', '陸', '柒', '捌', '玖'); //基本單位 var cnIntRadice = new Array('', '拾', '佰', '仟'); //對應整數部分擴充套件單位 var cnIntUnits = new Array('', '萬', '億', '兆'); //對應小數部分單位 var cnDecUnits = new Array('角', '分', '毫', '釐'); //整數金額時後面跟的字元 var cnInteger = '整'; //整型完以後的單位 var cnIntLast = '元'; //最大處理的數字 var maxNum = 999999999999999.9999; //金額整數部分 var integerNum; //金額小數部分 var decimalNum; //輸出的中文金額字串 var chineseStr = ''; //分離金額後用的陣列,預定義 var parts; if (money == '') { return ''; } money = parseFloat(money); if (money >= maxNum) { //超出最大處理數字 return ''; } if (money == 0) { chineseStr = cnNums[0] + cnIntLast + cnInteger; return chineseStr; } //轉換為字串 money = money.toString(); if (money.indexOf('.') == -1) { integerNum = money; decimalNum = ''; } else { parts = money.split('.'); integerNum = parts[0]; decimalNum = parts[1].substr(0, 4); } //獲取整型部分轉換 if (parseInt(integerNum, 10) > 0) { var zeroCount = 0; var IntLen = integerNum.length; for (var i = 0; i < IntLen; i++) { var n = integerNum.substr(i, 1); var p = IntLen - i - 1; var q = p / 4; var m = p % 4; if (n == '0') { zeroCount++; } else { if (zeroCount > 0) { chineseStr += cnNums[0]; } //歸零 zeroCount = 0; chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if (m == 0 && zeroCount < 4) { chineseStr += cnIntUnits[q]; } } chineseStr += cnIntLast; } //小數部分 if (decimalNum != '') { var decLen = decimalNum.length; for (var i = 0; i < decLen; i++) { var n = decimalNum.substr(i, 1); if (n != '0') { chineseStr += cnNums[Number(n)] + cnDecUnits[i]; } } } if (chineseStr == '') { chineseStr += cnNums[0] + cnIntLast + cnInteger; } else if (decimalNum == '') { chineseStr += cnInteger; } return chineseStr; }