JS Method for Converting Digital Amount into Capital Chinese Characters of RMB

  • 2021-07-07 06:20:17
  • OfStack

In this paper, an example is given to describe the method of converting digital amount into capital RMB Chinese characters by JS. Share it for your reference, as follows:


// The code looks like this: 
function convertCurrency(money) {
  // Numbers of Chinese characters 
  var cnNums = new Array(' Zero ', ' One ', ' 2 ', ' 3 ', ' Four ', ' Wu ', ' Land ', ' Qi ', ' Eight ', ' Nine ');
  // Basic unit 
  var cnIntRadice = new Array('', ' Pick up ', ' Bai ', ' Thousands ');
  // Extended unit corresponding to integer part 
  var cnIntUnits = new Array('', ' Ten thousand ', ' Billion ', ' Mega ');
  // Unit corresponding to decimal part 
  var cnDecUnits = new Array(' Angle ', ' Points ', ' Millimetre ', ' Per cent ');
  // Characters followed by integer amounts 
  var cnInteger = ' Whole ';
  // Unit after integer type is finished 
  var cnIntLast = ' Yuan ';
  // Maximum number processed 
  var maxNum = 999999999999999.9999;
  // Integer part of amount 
  var integerNum;
  // Fractional part of the amount 
  var decimalNum;
  // Output Chinese amount string 
  var chineseStr = '';
  // Array used after separating amounts, predefined 
  var parts;
  if (money == '') { return ''; }
  money = parseFloat(money);
  if (money >= maxNum) {
    // Maximum processing number exceeded 
    return '';
  }
  if (money == 0) {
    chineseStr = cnNums[0] + cnIntLast + cnInteger;
    return chineseStr;
  }
  // Convert to String 
  money = money.toString();
  if (money.indexOf('.') == -1) {
    integerNum = money;
    decimalNum = '';
  } else {
    parts = money.split('.');
    integerNum = parts[0];
    decimalNum = parts[1].substr(0, 4);
  }
  // Get integer partial conversion 
  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];
        }
        // Return to zero 
        zeroCount = 0;
        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
      }
      if (m == 0 && zeroCount < 4) {
        chineseStr += cnIntUnits[q];
      }
    }
    chineseStr += cnIntLast;
  }
  // Fractional part 
  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;
}

PS: Here is another online tool for your reference:

Online conversion tool for RMB capitalization:
http://tools.ofstack.com/zhuanhuanqi/rmbupper

More readers interested in JavaScript can check the topics of this site: "Summary of JavaScript Mathematical Operation Usage", "Summary of JavaScript Data Structure and Algorithm Skills", "Summary of JavaScript Switching Special Effects and Skills", "Summary of JavaScript Search Algorithm Skills", "Summary of JavaScript Animation Special Effects and Skills", "Summary of JavaScript Error and Debugging Skills" and "Summary of JavaScript Traversal Algorithm and Skills"

I hope this article is helpful to everyone's JavaScript programming.


Related articles: