明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

vue3项目数字金额转大写

Posted on 2024-03-29 09:50  且行且思  阅读(37)  评论(0编辑  收藏  举报
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>