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;
  }