当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 183883提问 提问时间:2023-09-26 09:40:15阅读次数: 83

最佳答案 问答题库838位专家为你答疑解惑

文章目录

  • 封装转换函数:
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);// 位数进 1unitIndex += 1;}return chineseStr;
}
  • 使用案例:
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亿二千万零一千一百一十
查看全文

99%的人还看了

相似问题

猜你感兴趣

版权申明

本文"【JS】阿拉伯数字转成中文数字(包括亿单位长数字)":http://eshow365.cn/6-13867-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!