我建立了一个系统,将一个紧凑的数据字符串解析为 JSON。我使用 19 位数字来存储 ID。不幸的是,任何大于 17 位的数字都会parseFloat()将最后几位四舍五入。
这会破坏整个数据字符串。我可以解决这个问题吗?
例如8246295522085275215变成8246295522085276000. 为什么是这样?
我建立了一个系统,将一个紧凑的数据字符串解析为 JSON。我使用 19 位数字来存储 ID。不幸的是,任何大于 17 位的数字都会parseFloat()将最后几位四舍五入。
这会破坏整个数据字符串。我可以解决这个问题吗?
例如8246295522085275215变成8246295522085276000. 为什么是这样?
JavaScript 只有一种数字类型,即 IEEE 754 双精度浮点数。这意味着,您最多有 52 位精度,比小数点后 15 位多一点。
如果您需要比这更高的精度,则必须使用 bignum 库或使用字符串。
如果 JavaScript 中的数字高于某个值,它们就会失去精度。
根据http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference,整数只能可靠到 15 位(9 * 10^15确切地说)。
尝试其中之一 1. 使用字符串 2. 将您的数字一分为二并将较小的部分保存到数组中 3. Bignum 库 4. 如果可以,请使用较小的数字