/**
 * 数字格式化
 * @param num
 * @param options 配置项(可选)
 * @param options.decimals 小数位数
 * @param options.separator 分隔符
 * @param options.decimalPoint 小数点
 * @returns
 */
export function formatNumber(
  num?: number | string,
  options?: {
    decimals?: number;
    separator?: string;
    decimalPoint?: string;
  },
): string {
  // 处理参数
  const separator = options?.separator || ',';
  const decimalPoint = options?.decimalPoint || '.';
  const decimals = options?.decimals;

  // 转换输入为数字
  const number = typeof num === 'string' ? parseFloat(num) : Number(num);

  if (isNaN(number)) return 'N/A';

  // 处理小数位数
  const numStr = decimals !== undefined ? number.toFixed(decimals) : number.toString();

  // 分割整数和小数部分
  const parts = numStr.split('.');

  // 处理整数部分
  parts[0] = parts[0].replace(/\d(?=(\d{3})+(?!\d))/g, '$&' + separator);

  // 重新组合
  return parts.length > 1 ? `${parts[0]}${decimalPoint}${parts[1]}` : parts[0];
}
