export function numberToChinese(num) {
    // 处理非数字、负数或小数情况
    if (isNaN(num) || num < 0 || !Number.isInteger(num)) {
        return "无效非负整数";
    }

    // 定义基本数字对应的中文
    const digits = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    // 定义单位（对应不同位数：个、十、百、千、万、十、百、千、亿、十、百、千）
    const units = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千'];

    // 处理0的情况
    if (num === 0) {
        return digits[0];
    }

    const numStr = num.toString();
    const length = numStr.length;
    let result = '';
    let zeroFlag = false; // 标记是否需要补零

    for (let i = 0; i < length; i++) {
        const digit = parseInt(numStr[i]);
        const position = length - 1 - i; // 计算当前数字的位数索引

        if (digit !== 0) {
            // 如果之前有零，先补一个零
            if (zeroFlag) {
                result += digits[0];
                zeroFlag = false;
            }
            result += digits[digit] + units[position];
        } else {
            // 当前数字是零，标记需要补零（但不立即补）
            zeroFlag = true;

            // 处理单位在万、亿时的特殊情况（避免连续单位）
            if (units[position] === '万' || units[position] === '亿') {
                result += units[position];
                zeroFlag = false; // 万/亿单位后重置零标记
            }
        }
    }

    // 处理十位数的特殊情况（如10->十，而不是一十）
    if (result.startsWith('一十')) {
        result = result.substring(1);
    }

    return result;
}
