关于超过js的number类型最大值(9007199254740992),前端的解决办法
最近发现,返回的值是String的类型,但是下一个接口需要 数字类型的,怎么办呢?
sourceId:'7298485230125482592'
首先想到:
Number(sourceId)
//我以为的结果 7298485230125482592
//实际得到的结果 7298485230125483000
//ps:我还对后端的说,你快去查查接口,人家查了好久。
我们来分析一下为什么,js的number类型有个最大值(安全值)。即2的53次方,为9007199254740992。如果超过这个值,那么js会出现不精确的问题。这个值为16位。
那么怎么解决呢?我们来了解一下BIgint
BigInt 类型:
Javascript 中的任意精度整数,可以安全存储和操作大整数。即始超出 Number 能够表示的安全整数范围。是 chrome 67中的新功能。
BigInt(sourceId)
//实际得到的结果 7298485230125482592
OVER !