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

JavaScript中使用BigInt转换大数为何自动加1?

关于BigInt转换结果不符合预期的问题

先看你给出的代码:

BigInt(9223372036854775807) // 9223372036854775808n

问题的核心原因是:

  • 你传入BigInt()的参数是Number类型,而Number存在精度上限。
  • Number遵循IEEE 754双精度浮点数标准,能精确表示的最大整数是2^53 - 1(即9007199254740991)。9223372036854775807已经超出这个范围,所以JavaScript解析这个数字字面量时,会自动将其近似为最近的可精确表示的整数9223372036854775808,再转成BigInt自然就是这个值。

要得到预期的9223372036854775807n,有两种正确写法:

  • 使用BigInt字面量:
    9223372036854775807n // 9223372036854775807n
    
  • 传入字符串形式的数字给BigInt():
    BigInt("9223372036854775807") // 9223372036854775807n
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:04:55