js中把数字转换成汉字输出

21 篇文章 1 订阅

前言:

       在js中把数字转换成汉字输出的方法,直接可以拿来用

方法一:支持7位,也就是最大1234567   

案例:this.toChinesNum(10101010)  得到 "一千零一十万一千零一十"

     /**
     * 数字转成汉字
     * @params num === 要转换的数字
     * @return 汉字
     * */
    toChinesNum(num) {
      let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
      let unit = ['', '十', '百', '千', '万']
      num = parseInt(num)
      let getWan = (temp) => {
        let strArr = temp.toString().split('').reverse()
        let newNum = ''
        let newArr = []
        strArr.forEach((item, index) => {
          newArr.unshift(item === '0' ? changeNum[item] : changeNum[item] + unit[index])
        })
        let numArr = []
        newArr.forEach((m, n) => {
          if (m !== '零') numArr.push(n)
        })
        if (newArr.length > 1) {
          newArr.forEach((m, n) => {
            if (newArr[newArr.length - 1] === '零') {
              if (n <= numArr[numArr.length - 1]) {
                newNum += m
              }
            } else {
              newNum += m
            }
          })
        } else {
          newNum = newArr[0]
        }

        return newNum
      }
      let overWan = Math.floor(num / 10000)
      let noWan = num % 10000
      if (noWan.toString().length < 4) {
        noWan = '0' + noWan
      }
      return overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)
    }

调用: let a  =  this.toChinesNum(1)   这里的a拿到的值就是一

方法二:支持9位以上也就是亿级别的,如果需要钱的那种单位,把注释放开就行

toChineseBig(num) {
      // 将接收到的num转换为字符串
      var strNum = String(num)
      // 定义单位
      // var unit = ['拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟']
      var unit = ['十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千']
      // 结果中放一个符号,用来解决最后的零去不掉的问题
      var result = ['@']
      // 单位下标
      var unitNo = 0
      // 从后往前遍历接收到的数据,省略结束条件
      for (let i = strNum.length - 1;; i--) {
        // 调用转大写函数,将每一个数字转换成中文大写,一次放入一个到结果数组中
        result.unshift(numToChinese(strNum[i]))
        // 如果不大于0
        if (i <= 0) {
          // 结束循环
          break
        }
        // 放入一个数字,放入一个单位
        result.unshift(unit[unitNo])
        // 单位下标加1
        unitNo++
      }
      // 将结果数组转换成字符串,并使用正则替换一些关键位置,让结果符合语法
      // return result.join('').replace(/(零[仟佰拾]){1,3}/g, '零').replace(/零{2,}/g, '零').replace(/零([万亿])/g, '$1').replace(/亿万/g, '亿').replace(/零*@/g, '')
      return result.join('').replace(/(零[千百十]){1,3}/g, '零').replace(/零{2,}/g, '零').replace(/零([万亿])/g, '$1').replace(/亿万/g, '亿').replace(/零*@/g, '')

      function numToChinese(n) {
        // var chineseBigNum = '零壹贰叁肆伍陆柒捌玖'
        var chineseBigNum = '零一二三四五六七八九'
        return chineseBigNum[n]
      }
    }
  }

调用: let a  =  this.toChineseBig(112345111111)   这里的a拿到的值就是   一千一百二十三亿四千五百一十一万一千一百一十一

  • 20
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
### 回答1: 答: function numberToChinese(num) { var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"]; var chnUnitSection = ["","万","亿","万亿","亿亿"]; var chnUnitChar = ["","十","百","千"]; var strIns = '', chnStr = ''; var unitPos = 0; var zero = true; while(num > 0){ var v = num % 10; if(v === 0){ if(!zero){ zero = true; chnStr = chnNumChar[v] + chnStr; } }else{ zero = false; strIns = chnNumChar[v]; strIns += chnUnitChar[unitPos]; chnStr = strIns + chnStr; } unitPos++; num = Math.floor(num / 10); } return chnStr; } ### 回答2: 以下是一个将数字转换为文的JavaScript代码: ```javascript // 定义数字 var chineseNumbers = { '0': '零', '1': '一', '2': '二', '3': '三', '4': '四', '5': '五', '6': '六', '7': '七', '8': '八', '9': '九' }; function numberToChinese(number) { var chineseString = ''; if (number === 0) { return chineseNumbers['0']; } while (number > 0) { var digit = number % 10; chineseString = chineseNumbers[digit] + chineseString; number = Math.floor(number / 10); } return chineseString; } // 测试代码 console.log(numberToChinese(123)); // 输出: 一百二十三 console.log(numberToChinese(456789)); // 输出: 四十五万六千七百八十九 ``` 这个代码定义了一个对象`chineseNumbers`,其包含了0-9的数字的映射。然后定义了一个函数`numberToChinese`用来将数字转换为文字符串。 在函数内部,我们首先判断输入的数字是否为0,如果是0则直接返回'零'。 接下来使用一个while循环,每次循环的目的是将数字的每一位转换成对应的数字并拼接到结果字符串`chineseString`的前面。通过对10取余获得当前位的数字,然后找到对应的数字并拼接。最后将输入的数字除以10取整,继续下一次循环直到数字变为0为止。 最后返回转换后的文字符串。 以上代码只是简单的将数字转换成文字符串,如果需要更复杂的语法规则,例如千、万、亿等单位的转换,还需要进一步完善代码。 ### 回答3: 以下是一个实现将数字转换成文的 JavaScript 代码: ```javascript function numberToChinese(num) { const chineseNums = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]; const chineseUnits = ["", "十", "百", "千", "万", "亿"]; if (num === 0) { return chineseNums[0]; } let result = ""; let unitIndex = 0; let temp = num; while (temp > 0) { const digit = temp % 10; if (digit !== 0) { result = chineseNums[digit] + chineseUnits[unitIndex] + result; } else if (unitIndex === 0 || result.charAt(0) !== chineseNums[0]) { result = chineseNums[digit] + result; } temp = Math.floor(temp / 10); unitIndex++; } return result; } // 示例用法 console.log(numberToChinese(12345)); // 输出:一万二千三百四十五 console.log(numberToChinese(6)); // 输出:六 console.log(numberToChinese(2000000000)); // 输出:二十亿 console.log(numberToChinese(1100100)); // 输出:一百一十万零一百 ``` 该代码定义了一个 `numberToChinese` 函数,该函数接受一个数字作为参数,并返回一个表示该数字对应文的字符串。 实现思路是将数字拆分为个位、十位、百位等,并使用 `chineseNums` 数组将对应的数字转换过来。同时使用 `chineseUnits` 数组来表示单位(十、百、千、万、亿)。通过对数字进行取余和整除的操作,循环处理每个数字位上的值,并将转换后的数字和对应的单位拼接到最终的结果字符串上。 需要注意的是,当数字末尾为零时,根据数字的表示规则,只有在非个位数的位置上才添加 "零"。此外,处理完每位数字后,需要对 `unitIndex` 和 `temp` 进行递增和递除的操作,以便处理下一位数字。 示例用法展示了几个测试案例,代码能够正确将数字转换成对应的文字符串。
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值