numberToChinese(number) {
const chineseNums = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
const chineseUnits = ["", "十", "百", "千"];
const chineseBigUnits = ["", "万", "亿", "兆", "京", "垓", "秭", "穰", "沟", "涧", "正", "载", "极"];
if (isNaN(number)) {
return "输入不是有效的数字";
}
if (number === 0) {
return chineseNums[0];
}
let result = "";
let unitIndex = 0;
let needZero = false; // 是否需要添加零
while (number > 0) {
const digit = number % 10;
if (digit !== 0) {
if (needZero) {
result = chineseNums[0] + result; // 添加零
needZero = false; // 重置标志
}
// 特殊处理十位数字为一的情况
if (digit === 1 && unitIndex === 1) {
result = chineseUnits[unitIndex] + result;
} else {
result = chineseNums[digit] + chineseUnits[unitIndex] + result;
}
} else {
needZero = true;
}
number = Math.floor(number / 10);
unitIndex++;
// 添加大单位(万、亿、兆等)
if (unitIndex % 4 === 0 && number > 0) {
result = chineseBigUnits[Math.floor(unitIndex / 4)] + result;
}
}
// 去除末尾的零
if (result.endsWith(chineseNums[0])) {
result = result.slice(0, -1);
}
return result;
}