• 【JS】阿拉伯数字转成中文数字(包括亿单位长数字)


    文章目录

    • 封装转换函数:
    function numberToChinese(num) {
      const chineseNums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
      const chineseUnits = ['', '十', '百', '千', '万', '十万', '百万', '千万', '亿'];
      if (num === 0) {
        return chineseNums[0];
      }
      let chineseStr = '';
      let unitIndex = 0;
    
      while (num > 0) {
        if (unitIndex > 8) {
          const start = chineseNums.indexOf(chineseStr[0]);
          const end = chineseStr.slice(1, -1);
          // 十亿以上 改为 数字输出
          chineseStr = `${num}${start}${end}`;
          break;
        }
        // 获取余数
        const remainder = num % 10;
        // 如果 num 不能被 10 整除
        if (remainder) {
          if (unitIndex === 1 && num < 10) {
            // 一十一 转换为 十一
            chineseStr = chineseUnits[unitIndex] + chineseStr;
          } else {
            console.log(chineseNums[remainder], chineseUnits[unitIndex], chineseStr);
            if (chineseStr.includes('万')) {
              // 优化万级别的显示
              chineseStr = chineseNums[remainder] + chineseUnits[unitIndex].replace('万', '') + chineseStr;
            } else {
              chineseStr = chineseNums[remainder] + chineseUnits[unitIndex] + chineseStr;
            }
          }
        } else {
          // 加零
          chineseStr = chineseNums[remainder] + chineseStr;
        }
        // 去除末尾的 零
        if (chineseStr.charAt(chineseStr.length - 1) === chineseNums[0]) {
          chineseStr = chineseStr.slice(0, -2);
        }
        // 去重中间重复的 零
        chineseStr = chineseStr.replace('零零', '零');
        // num 除 10,向下取整
        num = Math.floor(num / 10);
        // 位数进 1
        unitIndex += 1;
      }
      return chineseStr;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 使用案例:
    console.log(numberToChinese(0));	// 零
    console.log(numberToChinese(9));	// 九
    console.log(numberToChinese(11));	// 十一
    console.log(numberToChinese(498827030));	// 四亿九千八百八十二万七千零三十
    console.log(numberToChinese(220830734));	// 二亿二千零八十三万零七百三十四
    console.log(numberToChinese(33320001111));	// 333亿二千万零一千一百一十
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    基于Spring框架搭建网站实验
    ajax调用webservice
    每日两题 131分割回文串 784字母大小写全排列(子集模版)
    nacos2.0.2漏洞分析及解决方法
    【Spark NLP】第 15 章:聊天机器人
    Linux学习(4)——Linux目录结构
    计算机网络编程 | 并发服务器代码实现(多进程/多线程)
    java js 经纬度转换 大地坐标(高斯投影坐标)与经纬度互相转换
    vscode支持c++编译
    使用 Go HTTP 框架 Hertz 进行 JWT 认证
  • 原文地址:https://blog.csdn.net/qq_45677671/article/details/133270837