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

parseInt转换超大二进制数输出错误,Node.js是否无法处理?

问题原因与解决方案

为什么结果错误?

JavaScript里的Number类型是64位双精度浮点数,它只能精确表示**2^53 - 1(即9007199254740991)**以内的整数。你提供的二进制字符串转十进制后是7048259459772055567,这个数值远大于2^53-1,所以用parseInt转换时,超出精度范围的部分会丢失,导致结果不准确。

正确的处理方式

使用JavaScript的BigInt类型来处理超大整数,它支持任意精度的整数运算,不会丢失精度。有两种写法可以得到正确结果:

  • 直接给二进制字符串加上0b前缀,传给BigInt:

    console.log(BigInt("0b110000111010000011100101010001010101000100000000000000000001111"));
    
  • 或者给BigInt构造函数传入二进制字符串和基数2:

    console.log(BigInt("110000111010000011100101010001010101000100000000000000000001111", 2));
    

执行以上代码后,控制台会输出正确的数值7048259459772055567n(末尾的n是BigInt类型的标识,若需要转成普通字符串,可调用.toString()方法)。

内容的提问来源于stack exchange,提问作者yi long cheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:32:20