/**
 * @description: 金额格式化工具函数
 */

/**
 * @description: 截取数字到小数点后指定位数（不四舍五入）
 * @param value 需要格式化的值
 * @param decimals 保留的小数位数，默认2位
 * @returns 格式化后的字符串或数字
 */
export function formatDecimalTruncate(value: string | number | null | undefined, decimals: number = 2): string | number {
  // 处理空值
  if (value === null || value === undefined || value === '') {
    return value ?? ''
  }

  // 转换为字符串检查原始格式
  const originalStr = String(value)
  
  // 转换为数字检查是否有效
  const num = Number(value)
  
  // 如果不是有效数字，返回原值
  if (isNaN(num)) {
    return value
  }

  // 分割整数和小数部分
  const dotIndex = originalStr.indexOf('.')
  
  // 如果没有小数点，添加小数位后返回
  if (dotIndex === -1) {
    return `${originalStr}.${'0'.repeat(decimals)}`
  }
  
  const integerPart = originalStr.substring(0, dotIndex)
  const decimalPart = originalStr.substring(dotIndex + 1)
  
  // 截取到指定小数位（不四舍五入）
  const truncatedDecimal = decimalPart.substring(0, decimals)
  
  // 补齐小数位到指定位数
  const paddedDecimal = truncatedDecimal.padEnd(decimals, '0')
  
  return `${integerPart}.${paddedDecimal}`
}