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

JavaScript toFixed方法舍入异常:1.535未正确舍入为1.54

JavaScript中toFixed方法的舍入异常原因分析

这不是toFixed的bug,本质是JavaScript的浮点数存储机制导致的精度问题:

  • JavaScript采用IEEE 754双精度浮点数标准存储数值,大部分十进制小数无法被精确表示,只能以二进制近似值存储。
  • 1.535在内存中实际存储的是一个略小于1.535的近似值(比如1.5349999999999998),当调用toFixed(2)时,这个值会被向下舍入为1.53。
  • 而2.535的二进制近似值则略大于2.535,因此toFixed(2)会正常向上舍入为2.54。

你可以通过以下代码验证这个差异:

console.log(1.535.toString(2)); // 输出近似的二进制值,能看到它略小于实际的1.535
console.log(2.535.toString(2)); // 输出的二进制值略大于实际的2.535

如果需要精确的四舍五入,可以自己实现逻辑,比如先放大数值再取整:

function preciseRound(num, digits) {
  const scale = Math.pow(10, digits);
  return (Math.round(num * scale) / scale).toFixed(digits);
}

console.log(preciseRound(1.535, 2)); // 输出 "1.54"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:01:05