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.