数值型字符串处理

43 阅读1分钟
export function convertToFixedDecimalPlaces(str: string, decimalPlaces: number) {
  const num = Number(str);

  if (!isNaN(num) && isFinite(num)) {
    return parseFloat(str).toFixed(decimalPlaces);
  }
  return str; // 如果不是数值型字符串,返回字符串
}

export function formatNumericString(str: string) {
  if (str === '') return '';
  const num = Number(str);

  // 检查是否为有效数字
  if (isNaN(num) || !isFinite(num)) {
    return str; // 非数值型字符串返回原值
  }

  // 检查是否为整数
  if (Number.isInteger(num)) {
    return num; // 整数型字符串转换成整数
  }

  // 检查小数位数
  const decimalPart = str.split('.')[1];
  if (!decimalPart) {
    return num; // 没有小数部分,返回数字
  }

  if (decimalPart.length === 2) {
    // 两位小数保持不变
    return parseFloat(num.toFixed(2));
  } else if (decimalPart.length >= 3) {
    // 超过三位小数的保留三位小数
    return parseFloat(num.toFixed(3));
  }

  // 其他情况(如1位小数)保留原样
  return num;
}