const toUpperCaseAmount = (value) => { // 将数字金额转换为大写的逻辑 const digitUppercase = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; const unit = ['元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万']; // 小数部分----将数字转换为字符串,并按小数点进行分割 const amountStr = String(value).split('.'); // 整数部分转换 let integerPart = ''; for (let i = 0; i < amountStr[0].length; i++) { integerPart += digitUppercase[parseInt(amountStr[0][i])] + unit[amountStr[0].length - i - 1]; } // 小数部分转换 let decimalPart = ''; if (amountStr[1] && amountStr[1].length > 0) { decimalPart = digitUppercase[parseInt(amountStr[1][0])] + '角'; if (amountStr[1].length > 1) { decimalPart += digitUppercase[parseInt(amountStr[1][1])] + '分'; } } return integerPart + decimalPart; };
vue 3
//vue3 人民币大写转换 const toUpperCaseAmount2 = (currencyDigits) => { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = '零'; var CN_ONE = '壹'; var CN_TWO = '贰'; var CN_THREE = '叁'; var CN_FOUR = '肆'; var CN_FIVE = '伍'; var CN_SIX = '陆'; var CN_SEVEN = '柒'; var CN_EIGHT = '捌'; var CN_NINE = '玖'; var CN_TEN = '拾'; var CN_HUNDRED = '佰'; var CN_THOUSAND = '仟'; var CN_TEN_THOUSAND = '万'; var CN_HUNDRED_MILLION = '亿'; var CN_SYMBOL = '人民币'; var CN_DOLLAR = '元'; var CN_TEN_CENT = '角'; var CN_CENT = '分'; var CN_INTEGER = '整'; // Variables: var integral; // Represent integral part of digit number. var decimal; // Represent decimal part of digit number. var outputCharacters; // The output result. var parts; var digits, radices, bigRadices, decimals; var zeroCount; var i, p, d; var quotient, modulus; // Validate input string: currencyDigits = String(currencyDigits); // Process the coversion from currency digits to characters: // Separate integral and decimal parts before processing coversion: parts = String(currencyDigits).split('.'); if (parts.length > 1) { integral = parts[0]; decimal = parts[1]; // Cut down redundant decimal digits that are after the second. decimal = decimal.substr(0, 2); } else { integral = parts[0]; decimal = ''; } // Prepare the characters corresponding to the digits: digits = [ CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE, ]; radices = ['', CN_TEN, CN_HUNDRED, CN_THOUSAND]; bigRadices = ['', CN_TEN_THOUSAND, CN_HUNDRED_MILLION]; decimals = [CN_TEN_CENT, CN_CENT]; // Start processing: outputCharacters = ''; // Process integral part if it is larger than 0: if (Number(integral) > 0) { zeroCount = 0; for (i = 0; i < integral.length; i++) { p = integral.length - i - 1; d = integral.substr(i, 1); quotient = p / 4; modulus = p % 4; if (d == '0') { zeroCount++; } else { if (zeroCount > 0) { outputCharacters += digits[0]; } zeroCount = 0; outputCharacters += digits[Number(d)] + radices[modulus]; } if (modulus == 0 && zeroCount < 4) { outputCharacters += bigRadices[quotient]; zeroCount = 0; } } outputCharacters += CN_DOLLAR; } // Process decimal part if there is: if (decimal != '') { for (i = 0; i < decimal.length; i++) { d = decimal.substr(i, 1); if (d != '0') { outputCharacters += digits[Number(d)] + decimals[i]; } } } // Confirm and return the final output string: if (outputCharacters == '') { outputCharacters = CN_ZERO + CN_DOLLAR; } if (decimal == '') { outputCharacters += CN_INTEGER; } return outputCharacters; }; </script>