es将数字转换为中文数字
时间: 2024-03-10 14:46:09 浏览: 97
数字转中文
ES6 中可以使用模板字符串和数组方法,可以更简便地将数字转换为中文数字:
```javascript
const cnNums = ['零','一','二','三','四','五','六','七','八','九'];
const cnIntUnits = ['', '十', '百', '千'];
const cnIntRadice = ['', '万', '亿', '万亿'];
function numToChinese(num) {
let integerNum = Math.floor(num);
let decimalNum = num - integerNum;
let chineseNum = '';
// 转换整数部分
let zeroCount = 0;
let i = 0;
while (integerNum > 0) {
let unit = cnIntUnits[i];
let n = integerNum % 10;
if (n === 0) {
if (zeroCount === 0) {
chineseNum = cnNums[n] + chineseNum;
}
zeroCount++;
} else {
zeroCount = 0;
chineseNum = cnNums[n] + unit + chineseNum;
}
i++;
integerNum = Math.floor(integerNum / 10);
}
// 处理整数部分为零的情况
if (chineseNum[chineseNum.length-1] === '零') {
chineseNum = chineseNum.substr(0, chineseNum.length-1);
}
// 转换小数部分
if (decimalNum > 0) {
let decimalStr = decimalNum.toFixed(2).substring(2);
for (let i = 0; i < decimalStr.length; i++) {
chineseNum += cnNums[parseInt(decimalStr[i])] + cnDecUnits[i];
}
}
// 处理整数部分为零且小数部分为零的情况
if (chineseNum === '') {
chineseNum = cnNums[0];
}
return chineseNum;
}
```
使用示例:
```javascript
numToChinese(123); // "一百二十三"
numToChinese(4567.89); // "四千五百六十七点八九"
```
阅读全文