js 数字转大写数字

该代码定义了一个名为numToCn的JavaScript函数,用于将数字转换为其中文表示。函数处理正负数,按照从高位到低位的顺序,结合数字和单位的中文数组,生成相应的中文字符串。例如,numToCn(1212121222)返回一亿二千一百二十一万二千二百二十二。
摘要由CSDN通过智能技术生成


function numToCn(num) {
  // 定义数字和单位对应的中文表达形式
  const numCn = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
  const unitCn = ['', '十', '百', '千', '万', '亿'];
  //将数字转换为字符串
  const str = num.toString();
  //用于记录结果的字符串
  let result = '';
  //用于记录当前数字位于整个数字的哪一位
  let digitIndex = str.length - 1;
  //用于记录当前数字在所处位数中的位置,0表示最高位,1表示次高位,以此类推
  let digitPos = 0;
  //检查数字是否是负数
  const isNegative = str[0] === '-';
  if (isNegative) {
    str = str.slice(1);
    digitIndex--;
  }
  //对每一位数字进行处理,从高位到低位
  for (let i = 0; i < str.length; i++) {
    //获取当前位的数字
    const digit = parseInt(str[i]);
    //计算当前数字所在的单位
    const unit = (digitIndex - i) % 4;
    //如果当前数字为0,则需要特殊处理
    if (digit === 0) {
      //如果当前数字所在单位为万或亿,则加上对应的单位
      if (unit === 0 && (digitIndex - i) / 4 >= 1) {
        result += unitCn[(digitIndex - i) / 4];
        digitPos = 0;
      } else {
        if (digitPos !== 0) {
          result += numCn[digit];
        }
        digitPos++;
      }
    } else {
      //对非0数字的处理,加上数字本身和对应的单位
      result += numCn[digit] + unitCn[unit];
      digitPos = 0;
    }
  }
  //如果数字为0,则结果为“零”
  if (result === '') {
    result = numCn[0];
  }
  //如果是负数,则加上“负”
  if (isNegative) {
    result = '负' + result;
  }
  return result;
}
```

使用以上实现,调用 `numToCn(1212121222)` 返回结果为: "一亿二千一百二十一万二千二百二十二"。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值