1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > js实现数字金额转换为对应的大写金额(精确到小数点后两位 支持负数金额的转换)

js实现数字金额转换为对应的大写金额(精确到小数点后两位 支持负数金额的转换)

时间:2021-04-13 09:18:05

相关推荐

js实现数字金额转换为对应的大写金额(精确到小数点后两位 支持负数金额的转换)

####数字金额转换为对应的大写金额代码实现如下:

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; }// 转换为浮点数类型,会自动去掉首尾的0cash = 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;}

####效果图如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。