/**
 * 货币单位转换工具函数
 * 将分转换为元，处理借呗金额显示
 */

/**
 * 将分转换为元
 * @param amount 分的金额
 * @param precision 精度，保留小数位数，默认2位
 * @returns 元的金额（字符串格式）
 */
export function fenToYuan(amount: number | string | null | undefined, precision: number = 2): string {
  // 处理空值、null、undefined
  if (amount === null || amount === undefined || amount === '') {
    return '0';
  }

  // 转换为数字
  const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;
  
  // 如果转换后不是有效数字，返回0
  if (isNaN(numAmount)) {
    return '0';
  }

  // 将分转换为元（除以100）
  const yuanAmount = numAmount / 100;
  
  // 按指定精度格式化
  return yuanAmount.toFixed(precision);
}

/**
 * 将分转换为元（数字格式）
 * @param amount 分的金额
 * @param precision 精度，保留小数位数，默认2位
 * @returns 元的金额（数字格式）
 */
export function fenToYuanNumber(amount: number | string | null | undefined, precision: number = 2): number {
  // 处理空值、null、undefined
  if (amount === null || amount === undefined || amount === '') {
    return 0;
  }

  // 转换为数字
  const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;
  
  // 如果转换后不是有效数字，返回0
  if (isNaN(numAmount)) {
    return 0;
  }

  // 将分转换为元（除以100）
  const yuanAmount = numAmount / 100;
  
  // 按指定精度格式化并返回数字
  return parseFloat(yuanAmount.toFixed(precision));
}

/**
 * 格式化金额显示，自动添加元单位
 * @param amount 分的金额
 * @param precision 精度，保留小数位数，默认2位
 * @returns 格式化的金额字符串，包含元单位
 */
export function formatFenToYuan(amount: number | string | null | undefined, precision: number = 2): string {
  return `${fenToYuan(amount, precision)}元`;
}