/**
 * 金额格式化工具函数
 * 去除小数点后多余的零，但保留必要的小数位
 *
 * @example
 * formatAmount(0.00)  // '0'
 * formatAmount(0.10)  // '0.1'
 * formatAmount(10.00) // '10'
 * formatAmount(10.01) // '10.01'
 *
 * @param value 需要格式化的数字
 * @returns 格式化后的字符串
 */
export function formatAmount(value: number): string {
  // if (!Number.isNaN(value)) {
  //   return '0';
  // }

  if (!value) {
    return '0';
  }

  // 固定保留2位小数
  const fixedStr = Number(value).toFixed(2);

  // 去除小数点后多余的零
  // 具体规则：
  // 1. 如果小数点后都是零，则去掉小数点和零
  // 2. 如果小数点后只有一位零，则去掉这位零
  // 3. 保留必要的小数位

  if (fixedStr.endsWith('.00')) {
    // 情况：0.00, 10.00 -> 去掉小数点后两位零
    return fixedStr.slice(0, -3);
  } else if (fixedStr.endsWith('0') && !fixedStr.endsWith('00')) {
    // 情况：0.10, 10.30 -> 去掉最后的零
    return fixedStr.slice(0, -1);
  } else {
    // 情况：0.01, 10.99 -> 保持不变
    return fixedStr;
  }
}

/**
 * 金额格式化工具函数（兼容已有函数）
 * 保持与项目中 formatCurrency 相似的接口
 *
 * @param value 需要格式化的数字
 * @returns 格式化后的字符串
 */
export const formatCurrency = (value: number): string => {
  return formatAmount(value);
};

/**
 * 验证金额字符串格式
 * 支持最多两位小数的数字格式
 *
 * @param value 待验证的字符串
 * @returns 是否为有效的金额格式
 */
export const validateAmount = (value: string): boolean => {
  const regex = /^\d*\.?\d{0,2}$/;
  return regex.test(value);
};
