- 问题,超过十六位字符串转为数字类型后,十六位后面的转为0,和原来的数据不相同,原因是JavaScript中的基本数据类Number是双精度浮点数,可以表示的最大安全范围是正负9007199254740991,2的53次方减一, 任何超出安全范围的数字都可能会失去精度。
- 解决方法
let targetNum = 1584863185350238210;
console.log('----------数字',targetNum) //你会发现后16位后都会变成0
let str = '1584863185350238210'
console.log('----------字符串',str)
let num = BigInt(str)
console.log('----------数字', String(num).split('n')[0])