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

jQuery中出现诡异数字13.700000000000001的问题排查

问题分析与解决

你遇到的是JavaScript浮点数精度问题引发的异常表现,核心原因如下:

  • JavaScript采用IEEE 754双精度浮点数存储数值,像3.7这类十进制小数无法被二进制精确表示,实际存储的是近似值。10 + 3.7的真实计算结果并非精确的13.7,而是13.699999999999998。
  • 虽然toFixed(2)会将这个近似值四舍五入为字符串"13.70",但如果代码中某个环节(比如隐式类型转换、意外的数值运算)把该字符串转回数字类型,浮点数的精度误差就会再次显现,最终显示为13.700000000000001(这是13.7对应的二进制浮点数近似值的十进制表现)。

解决方法

  • 确保数值以字符串格式传递:确认代码中没有将total转回数字的操作,直接使用toFixed(2)返回的字符串给text()方法:
const total = (parseFloat(10) + parseFloat(3.7)).toFixed(2);
// 直接传入字符串,避免类型转换
$('div').text(total);
  • 用整数运算规避浮点数误差:先将数值放大为整数计算,再缩小回目标小数位,从根源避免精度问题:
// 转成整数计算:10*100=1000,3.7*100=370,相加后1370,再除以100得到13.7
const total = ((10 * 100 + 370) / 100).toFixed(2);
$('div').text(total);
  • 使用更可靠的格式化API:用Intl.NumberFormat进行数值格式化,能更稳定地处理小数位:
const total = new Intl.NumberFormat('zh-CN', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
}).format(10 + 3.7);
$('div').text(total);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:30