You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用toFixed方法动态截取小数位且不进行四舍五入

动态截断小数位(无四舍五入)的实现方案

你当前用toFixed(precision)会自动四舍五入,不符合需求,这里提供两种直接截断小数位的实现方法,适配动态返回的precision值:

方法一:数学运算截断法

通过放大数值后截断整数部分,再缩小回原比例,实现无四舍五入的效果,适合大多数常规数值场景:

function truncateToPrecision(num, precision) {
  const factor = Math.pow(10, precision);
  // Math.trunc直接移除小数部分,正负数值都适用
  return Math.trunc(num * factor) / factor;
}

替换你原有代码的用法:

const precision = pairType === 'base' ? selectedBaseCurrencyObj.precision.amount : selectedBaseCurrencyObj.precision.cost;
// 先截断数值
const truncatedNum = truncateToPrecision(Number(assetObj.freeTotal), precision);
// 如果需要固定位数的字符串(比如精度为2时,1.2显示为"1.20"),再转成字符串
const displayValue = truncatedNum.toFixed(precision);

方法二:字符串直接处理法

如果担心大数运算的精度问题(比如加密货币的超大数值),可以直接操作字符串来截断小数部分:

function truncateToPrecision(num, precision) {
  // 精度为0时直接返回整数部分
  if (precision <= 0) return Math.trunc(num).toString();
  
  const numStr = num.toString();
  const [integerPart, decimalPart = ''] = numStr.split('.');
  // 截取指定长度的小数部分,不足的话自动补空(后续转固定位数可以补0)
  const truncatedDecimal = decimalPart.slice(0, precision);
  
  return `${integerPart}.${truncatedDecimal}`;
}

额外注意事项

  • 确保precision是合法的非负整数,可提前做处理:precision = Math.max(0, parseInt(precision, 10))
  • 如果遇到科学计数法格式的数值,可先转成普通数字字符串再处理(加密货币项目中这种情况极少)

内容的提问来源于stack exchange,提问作者Kimbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:25:22