js数字转汉字
代码
function numberToChinese(num) {
if (typeof num !== 'number' || !Number.isInteger(num) || num < 0) {
throw new Error('参数必须是一个非负整数');
}
const chineseNumbers = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const units = ['', '十', '百', '千', '万', '十', '百', '千', '亿'];
let str = '';
let zeroFlag = false;
const numStr = num.toString();
for (let i = 0; i < numStr.length; i++) {
const digit = numStr[i];
const chineseDigit = chineseNumbers[digit];
const unit = units[numStr.length - 1 - i];
if (digit === '0') {
if (!zeroFlag) {
str += chineseDigit;
zeroFlag = true;
}
} else {
str += chineseDigit + unit;
zeroFlag = false;
}
}
if (str.endsWith('零')) {
str = str.slice(0, -1);
}
return str;
}