JavaScript/jQuery不四舍五入保留1位小数精确显示的实现问题
JavaScript无四舍五入保留1位小数实现方案
你之前使用的toFixed、toPrecision以及Math.round相关实现默认都会执行四舍五入逻辑,要实现无进位截断保留小数,可使用以下两种方案:
方法1:数字运算实现(性能最优)
使用Math.trunc()直接截断数字的小数部分,不会触发四舍五入逻辑,兼容现代浏览器:
var result = 6.853571428571428; // 保留1位小数,直接截断 var formatResult = Math.trunc(result * 10) / 10; $("#id").html(formatResult); // 输出结果为6.8
如果需要兼容IE等老旧浏览器,可以用parseInt替代Math.trunc:
var formatResult = parseInt(result * 10) / 10;
该方案同时支持正数、负数场景的截断,例如-6.8535处理后会得到-6.8。
方法2:字符串切割实现(规避浮点数精度问题)
如果担心浮点数运算带来的精度误差,可以转为字符串后按小数点分割截取:
var result = 6.853571428571428; var numStrArr = result.toString().split('.'); var formatResult = numStrArr.length > 1 ? `${numStrArr[0]}.${numStrArr[1].slice(0,1)}` : numStrArr[0]; $("#id").html(formatResult); // 输出结果为6.8
该方案完全避开浮点数运算逻辑,适合对精度要求极高的业务场景。
内容的提问来源于stack exchange,提问作者kleb_
相关产品推荐
相关产品推荐

