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

使用JavaScript的parseInt/Number转换大数字返回值异常求助

为什么字符串"6145390195186705543"转数字后变成6145390195186705000?

这是因为JavaScript的Number类型基于IEEE 754双精度浮点数标准,它的有效精度上限是53位二进制位,对应的十进制最大精确整数为2^53 - 1(即9007199254740991)。

你输入的字符串对应的数值6145390195186705543,已经超出了这个精确范围。双精度浮点数无法精确存储超过该范围的整数,转换时会自动近似到最近的可表示值,也就是你看到的6145390195186705000。

另外,parseInt()虽然负责解析整数,但它的返回值依然是Number类型,同样受限于双精度浮点数的精度限制。调整基数只是改变字符串的解析规则,不会突破浮点数的存储上限,所以结果一致。

验证代码:

// 双精度浮点数能精确表示的最大整数
const maxSafeInteger = 2 ** 53 - 1;
console.log(maxSafeInteger); // 输出 9007199254740991

// 目标数值与最大安全整数比较
const targetNum = 6145390195186705543;
console.log(targetNum > maxSafeInteger); // 输出 true,确认超出精确范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:01:47