Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
433 views
in Technique[技术] by (71.8m points)

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

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

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

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

let a = 1000000000000000000000000000001  
?  
console.log(a.toLocaleString('fullwide', { useGrouping: false }));//1000000000000000000000000000000

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

你这个这么大,上 BigInt 吧。

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

"1000000000000000000000000000001"

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...