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

JavaScript十进制转十六进制异常:Steam ID转换结果不符问题

问题原因与解决方案

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

  • JavaScript的Number是64位双精度浮点数,仅能精确表示**小于2^53(即9007199254740992)**的整数。
  • 你使用的十进制ID 76561199121591748 远大于这个阈值,赋值给Number变量时数值已被自动近似,丢失了末尾的精确信息——这就是转换结果与数据库不一致的根本原因。

解决方法:用BigInt处理高精度整数

JavaScript的BigInt类型支持任意精度整数,可完美处理这类超大数字:

// 方式1:用BigInt包装数字
let n = BigInt(76561199121591748);
console.log(n.toString(16)); // 输出 110000145386dc4

// 方式2:直接使用BigInt字面量(末尾加n)
let n = 76561199121591748n;
console.log(n.toString(16)); // 同样输出正确结果

你提到的在线转换网站能得到正确结果,是因为它们没有依赖JavaScript的Number类型,而是采用了支持高精度整数的处理逻辑(比如后端强类型整数或专门的大数运算库)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:57:20