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

为何BigInt(16795000205095893097)与预期值不相等?

为什么BigInt(16795000205095893097)的结果和输入值不符?

问题核心在于JavaScript的Number类型精度限制:

  • JavaScript中的普通数字是双精度64位浮点数,它能精确表示的最大整数是2^53 - 1(即9007199254740991)。
  • 你传入的16795000205095893097远大于这个阈值,当你把它作为数字传给BigInt()时,该数值已经被Number类型做了近似处理,丢失了部分精度,变成了16795000205095892992。
  • BigInt()接收的是这个近似后的数值,最终转换出的结果自然和原数不一致。

正确写法

要绕过Number类型的精度丢失,直接把数字以字符串形式传给BigInt()即可:

const unsigned64bitPrime = BigInt("16795000205095893097")
console.log('unsigned64bitPrime = ', unsigned64bitPrime);
// 输出:unsigned64bitPrime =  16795000205095893097n

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:16:19