js 金钱转中文大写
如果喜欢,可以点个攒~~
直接上代码
let toMoneyCapital = function (money = 0) { // if (typeof money !== 'number') throw Error('Require a number'); money = money.toString(); // 一些常量 let cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; let cnIntUnits = ['拾', '佰', '仟', '万', '亿', '兆']; let cnDecUnits = ['角', '分', '毫', '厘']; // 拆分整数小数部分 let parts = money.split('.'); let integer = parts[0]; let decimal = parts[1] ? parts[1].substr(0, 4) : ''; // 大写金额 let moneyCapital = ''; // 中间0统计 let countZero = 0; // 末尾0统计 let intStr = integer.replace(/0+$/, ''); let intZero = integer.length - intStr.length; // 整数末尾0统计 // 去除末尾0的整数 let intArr = intStr.split('').reverse(); for (let i = 0; i < intArr.length; i++) { let num = intArr[i]; let j = i + intZero; // 加上末尾0位数 if (num == 0) { if (j == 4 || j == 8 || j == 16) { // 是0时也要输出 万, 亿, 兆 if (countZero > 0) { // 如果有0 则先输出0 再输出 万, 亿, 兆 moneyCapital = cnNums[0] + moneyCapital; countZero = 0; } moneyCapital = cnIntUnits[3] + moneyCapital; } else { countZero++ } } else { if (countZero > 0) { moneyCapital = cnNums[0] + moneyCapital; countZero = 0; } if (j == 0) moneyCapital = cnNums[num] + moneyCapital; if (j % 4 == 1) moneyCapital = cnNums[num] + cnIntUnits[0] + moneyCapital; if (j % 4 == 2) moneyCapital = cnNums[num] + cnIntUnits[1] + moneyCapital; if (j % 4 == 3) moneyCapital = cnNums[num] + cnIntUnits[2] + moneyCapital; if (j == 4 || j == 12) moneyCapital = cnNums[num] + cnIntUnits[3] + moneyCapital; if (j == 8 || j == 20) moneyCapital = cnNums[num] + cnIntUnits[4] + moneyCapital; if (j == 16) moneyCapital = cnNums[num] + cnIntUnits[5] + moneyCapital; } } if (decimal) { moneyCapital += '元' for (let i = 0; i < decimal.length; i++) { let num = decimal[i]; if (num != 0) moneyCapital += cnNums[num] + cnDecUnits[i]; // 角分毫厘 } } else { moneyCapital += '元整' } console.log(moneyCapital); return moneyCapital; }