|  | @@ -1,56 +1,36 @@
 | 
	
		
			
				|  |  | -export function arabicToChinese(num) {
 | 
	
		
			
				|  |  | -  const units = [
 | 
	
		
			
				|  |  | -    "",
 | 
	
		
			
				|  |  | -    "十",
 | 
	
		
			
				|  |  | -    "百",
 | 
	
		
			
				|  |  | -    "千",
 | 
	
		
			
				|  |  | -    "万",
 | 
	
		
			
				|  |  | -    "十万",
 | 
	
		
			
				|  |  | -    "百万",
 | 
	
		
			
				|  |  | -    "千万",
 | 
	
		
			
				|  |  | -    "亿",
 | 
	
		
			
				|  |  | -    "十亿",
 | 
	
		
			
				|  |  | -    "百亿",
 | 
	
		
			
				|  |  | -    "千亿",
 | 
	
		
			
				|  |  | -    "万亿",
 | 
	
		
			
				|  |  | -    "十万亿",
 | 
	
		
			
				|  |  | -    "百万亿",
 | 
	
		
			
				|  |  | -    "千万亿",
 | 
	
		
			
				|  |  | -  ];
 | 
	
		
			
				|  |  | -  const digits = ["", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
 | 
	
		
			
				|  |  | -  const tenDigits = [
 | 
	
		
			
				|  |  | -    "十",
 | 
	
		
			
				|  |  | -    "二十",
 | 
	
		
			
				|  |  | -    "三十",
 | 
	
		
			
				|  |  | -    "四十",
 | 
	
		
			
				|  |  | -    "五十",
 | 
	
		
			
				|  |  | -    "六十",
 | 
	
		
			
				|  |  | -    "七十",
 | 
	
		
			
				|  |  | -    "八十",
 | 
	
		
			
				|  |  | -    "九十",
 | 
	
		
			
				|  |  | -  ];
 | 
	
		
			
				|  |  | +export function arabicToChinese(value) {
 | 
	
		
			
				|  |  | +  const digitMap = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
 | 
	
		
			
				|  |  | +  const unitMap = ['', '十', '百', '千', '万', '亿'];
 | 
	
		
			
				|  |  | +  let chineseNumber = '';
 | 
	
		
			
				|  |  | +  let digits = value.toString().split('');
 | 
	
		
			
				|  |  | +  let hasZero = false;
 | 
	
		
			
				|  |  | +  let lastUnit = '';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (num === 0) {
 | 
	
		
			
				|  |  | -    return "零";
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +  for (let i = digits.length - 1; i >= 0; i--) {
 | 
	
		
			
				|  |  | +    let digit = digits[i];
 | 
	
		
			
				|  |  | +    let unit = unitMap[digits.length - i - 1];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  let result = "";
 | 
	
		
			
				|  |  | -  let unitIndex = 0;
 | 
	
		
			
				|  |  | -  if (num == 10) {
 | 
	
		
			
				|  |  | -    return "十";
 | 
	
		
			
				|  |  | +    if (digit === '0') {
 | 
	
		
			
				|  |  | +      if ((unit === '十' || unit === '百') && i > 0 && digits[i - 1] !== '0') {
 | 
	
		
			
				|  |  | +        // 如果是十位或百位上的零,并且后面跟着非零数字,则保留零
 | 
	
		
			
				|  |  | +        chineseNumber = digitMap[digit] + chineseNumber;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      hasZero = true;
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      chineseNumber = digitMap[digit] + unit + chineseNumber;
 | 
	
		
			
				|  |  | +      if (unit === '十' && hasZero && lastUnit === '百') {
 | 
	
		
			
				|  |  | +        // 如果是十位并且之前有零,并且上一个单位是“百”,则在十位后插入零
 | 
	
		
			
				|  |  | +        chineseNumber = '零' + chineseNumber;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      hasZero = false;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    lastUnit = unit;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  while (num > 0) {
 | 
	
		
			
				|  |  | -    const digit = num % 10;
 | 
	
		
			
				|  |  | -    const isTenDigit =
 | 
	
		
			
				|  |  | -      unitIndex > 0 && digit === 1 && result.length > 0 && result[0] !== "零";
 | 
	
		
			
				|  |  | -    const unit = isTenDigit ? tenDigits[unitIndex - 1] : units[unitIndex];
 | 
	
		
			
				|  |  | -    const digitChinese = digit === 1 && isTenDigit ? "" : digits[digit];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    result = digitChinese + unit + result;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    num = Math.floor(num / 10);
 | 
	
		
			
				|  |  | -    unitIndex++;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +  // 去除开头的“零”
 | 
	
		
			
				|  |  | +  chineseNumber = chineseNumber.replace(/^零+/, '');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  return result;
 | 
	
		
			
				|  |  | +  return chineseNumber || '零';
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 |