JS之阿拉伯转为中文数字

JS之阿拉伯转为中文数字
之前在做初高中试题试卷的时候,需要用到中文数字,所以在此做一下记录

export function changeNumToHan(num) {
  var arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
  var arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿']
  if (!num || isNaN(num)) return '零'
  var english = num.toString().split('')
  var result = ''
  for (var i = 0; i < english.length; i++) {
    var des_i = english.length - 1 - i// 倒序排列设值
    result = arr2[i] + result
    var arr1_index = english[des_i]
    result = arr1[arr1_index] + result
  }
  result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十') // 将【零千、零百】换成【零】 【十零】换成【十】
  result = result.replace(/零+/g, '零') // 合并中间多个零为一个零
  result = result.replace(/零亿/g, '亿').replace(/零万/g, '万') // 将【零亿】换成【亿】【零万】换成【万】
  result = result.replace(/亿万/g, '亿') // 将【亿万】换成【亿】
  result = result.replace(/零+$/, '') // 移除末尾的零
  // 将【一十】换成【十】
  result = result.replace(/^一十/g, '十')
  return result
},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码将阿拉伯数字转换中文数字: ```javascript function numberToChinese(num) { var cnNums = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]; var cnIntUnits = ["", "万", "亿", "万亿"]; var cnIntRadice = ["", "十", "百", "千"]; var cnDecUnits = ["角", "分", "毫", "厘"]; var cnIntLast = "元"; var maxNum = 999999999999999.9999; var integerNum; var chineseStr = ""; var parts; if (num === "") { return ""; } num = parseFloat(num); if (num >= maxNum) { return ""; } if (isNaN(num)) { return ""; } integerNum = Math.floor(num); if (integerNum === 0) { chineseStr = cnNums[0] + cnIntLast; return chineseStr; } var intStr = integerNum.toString(); var len = intStr.length; var i, j; if (len > 15) { return ""; } parts = new Array(len); for (i = 0; i < len; i++) { parts[i] = parseInt(intStr.charAt(i), 10); } var partLen = Math.ceil(len / 4); var partChinese; for (i = 0; i < partLen; i++) { partChinese = ""; for (j = 0; j < 4; j++) { if (parts[i * 4 + j] === 0) { continue; } partChinese += cnNums[parts[i * 4 + j]] + cnIntRadice[4 - j - 1]; } partChinese += cnIntUnits[partLen - i - 1]; chineseStr += partChinese; } if (num.toString().indexOf(".") !== -1) { var decNum = num.toString().split(".")[1]; var decLen = decNum.length; for (i = 0; i < decLen; i++) { if (i > 3) { break; } chineseStr += cnNums[parseInt(decNum.charAt(i), 10)] + cnDecUnits[i]; } } if (chineseStr === "") { chineseStr += cnNums[0] + cnIntLast; } else if (num < 1) { chineseStr = cnNums[0] + chineseStr; } return chineseStr; } ``` 使用示例: ```javascript console.log(numberToChinese(123456789)); // 一亿二千三百四十五万六千七百八十九元 console.log(numberToChinese(100000001)); // 一亿零一元 console.log(numberToChinese(0.5)); // 五角 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值