####數字金額轉換爲對應的大寫金額代碼實現如下:
export function convertMoney(money) {
//漢字的數字
var cnNums = new Array('零', '壹', '貳', '叄', '肆', '伍', '陸', '柒', '捌', '玖');
//基本單位
var cnIntRadice = new Array('', '拾', '佰', '仟');
//對應整數部分擴展單位
var cnIntUnits = new Array('', '萬', '億', '兆');
//對應小數部分單位
var cnDecUnits = new Array('角', '分');
//整數金額時後面跟的字符
var cnInteger = '整';
//整型完以後的單位
var cnIntLast = '元';
// 如果爲負數
var cnIntMinus = '負';
// 負號處理後的數字
var cash;
//分離金額後用的數組,預定義
var parts;
//金額整數部分
var integerNum;
//金額小數部分
var decimalNum;
//輸出的中文金額字符串
var chineseStr = '';
// 判斷空
if (money == "") {
return "";
}
// 判斷正負
if(money.charAt(0) === "-"){
// chineseStr += cnIntMinus;
cash = money.slice(1);
}else{
cash = money;
}
// 轉換爲浮點數類型,會自動去掉首尾的0
cash = parseFloat(cash);
if (cash == 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr;
}
// 轉換爲字符串
cash = cash.toString();
if (cash.indexOf('.') == -1) {
integerNum = cash; //金額整數部分
decimalNum = ''; //金額小數部分
} else {
parts = cash.split(".");
integerNum = parts[0]; //金額整數部分
decimalNum = parts[1].substr(0, 2); //金額小數部分
}
// 轉換整數部分
if (integerNum != '-' && parseInt(integerNum, 10) > 0) {
var intLen = integerNum.length;
var zero = 0; //標記零出現次數
for (let i = 0; i < intLen; i++) {
var intChar = integerNum.substr(i, 1);
var intSlen = intLen - i - 1;
var divided = intSlen / 4;
var remain = intSlen % 4;
if (intChar == "0") {
zero++;
} else {
if (zero > 0) {
chineseStr += cnNums[0];
}
zero = 0;
chineseStr += cnNums[parseInt(intChar)] + cnIntRadice[remain];
}
if (remain === 0 && divided > 0) {
chineseStr += cnIntUnits[divided];
}
}
chineseStr += cnIntLast; //加上'元'字
}
if (decimalNum != ''){ // 小數部分存在時
var decLen = decimalNum.length;
for(let i=0; i<decLen; i++){
var decChar = decimalNum.substr(i,1);
if(decChar != '0'){
chineseStr += cnNums[parseInt(decChar)] + cnDecUnits[i];
}
if (decChar == '0' && parseInt(integerNum, 10) > 0){
chineseStr += cnNums[parseInt(decChar)] + cnDecUnits[i];
}
}
}else{
chineseStr += cnInteger;
}
return chineseStr;
}
####效果圖如下: