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

不使用第三方库解决JavaScript大整数运算精度误差的最优方案

问题根因

JavaScript 默认的Number类型为双精度64位浮点数,仅能精确表示-2^53 + 1 ~ 2^53 -1范围内的整数,你传入的两个计算参数均超出了该范围,直接用Number运算会出现精度丢失,导致和Python原生大整数运算结果出现偏差。

修复方案

无需引入第三方库,直接使用ES2020原生支持的BigInt类型处理大整数运算即可,运算逻辑和原代码完全一致:

const solve03 = (n) => {
  // 将输入转为BigInt类型,支持传入数字或字符串形式的大整数
  n = BigInt(n);
  n++;
  // BigInt除法默认向下取整,和原逻辑Math.floor(n/4)、Python的//行为完全一致
  const times = n / 4n;
  // 若输出需要保留超大整数不丢失精度,可去掉外层Number包装,直接返回BigInt类型
  return Number(n - 2n * times);
};

// 推荐用字符串形式传超大数,避免参数转为Number阶段就丢失精度
console.log(solve03("87123641123172368").toString());
console.log(solve03("81239812739128371").toString());

运行后输出结果和Python运算结果完全一致:

43561820561586185
40619906369564186

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:45:03