js 遇到较大整数转化为字符串时如何不用科学技术法且能保持精度?

王梓瑞
  • 5
新手上路,请多包涵

刚在做题的时候,其中一个步骤的需求是把Number类型的转化成String类型。

但是测试的时候有一个用例中的数特别大,转化的为字符串的时候发现了会自动转化为科学技术法表示,在找到解决科学技术法的问题之后。

却发现了如下的精度缺失(个位的1丢失了),请问如何在不用其他库的情况下,弥补这种缺失?

let a = 1000000000000000000000000000001  
​  
console.log(a.toLocaleString('fullwide', { useGrouping: false }));//1000000000000000000000000000000
回复
阅读 639
1 个回答

Number 安全递增的最大可能整数也就是 Number.MAX_SAFE_INTEGER 这个值目前是 9007199254740991

你这个这么大,上 BigInt 吧。

BigInt('1000000000000000000000000000001').toLocaleString('fullwide', { useGrouping: false });

"1000000000000000000000000000001"

P.S. 低版本浏览器你还是得引 polyfill。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏