bigint的缺陷?

作者站长头像
站长
· 阅读数 19

bigint操作数据时,如果使用BigInt()包住一个大于十六位的数字,例如BigInt(156454564564123435453456745645453),得到的结果却是156454564564123438394488632901632n,数字明显不一样了,但如果直接在数字后面加n,得到的结果又是一致的,这是为什么呢bigint的缺陷?

回复
1个回答
avatar
test
2024-07-14

BigInt()来构造bigint类型时,里面的参数应该尽量用字符串。

当你在代码中使用156454564564123435453456745645453这个字面量的number的时候,它在代码解析阶段就已经发生溢出了。因此BigInt(156454564564123435453456745645453)这段代码,实际是对一个已经发生溢出的数字来构造bigint,因此得到的结果也是一个已经溢出的数字。

要避免这种情况发生,应该使用字符串作为参数,即BigInt('156454564564123435453456745645453')

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容