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

test
2024-07-14
用BigInt()
来构造bigint
类型时,里面的参数应该尽量用字符串。
当你在代码中使用156454564564123435453456745645453
这个字面量的number
的时候,它在代码解析阶段就已经发生溢出
了。因此BigInt(156454564564123435453456745645453)
这段代码,实际是对一个已经发生溢出
的数字来构造bigint
,因此得到的结果也是一个已经溢出的数字。
要避免这种情况发生,应该使用字符串作为参数,即BigInt('156454564564123435453456745645453')
回复

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