8

我建立了一个系统,将一个紧凑的数据字符串解析为 JSON。我使用 19 位数字来存储 ID。不幸的是,任何大于 17 位的数字都会parseFloat()将最后几位四舍五入。

这会破坏整个数据字符串。我可以解决这个问题吗?

例如8246295522085275215变成8246295522085276000. 为什么是这样?

http://jsfiddle.net/RobertWHurst/mhZ7Q/

4

3 回答 3

13

JavaScript 只有一种数字类型,即 IEEE 754 双精度浮点数。这意味着,您最多有 52 位精度,比小数点后 15 位多一点。

如果您需要比这更高的精度,则必须使用 bignum 库或使用字符串。

于 2011-11-03T00:06:38.193 回答
3

如果 JavaScript 中的数字高于某个值,它们就会失去精度。

根据http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference,整数只能可靠到 15 位(9 * 10^15确切地说)。

于 2011-11-03T00:01:46.347 回答
1

尝试其中之一 1. 使用字符串 2. 将您的数字一分为二并将较小的部分保存到数组中 3. Bignum 库 4. 如果可以,请使用较小的数字

于 2013-11-23T02:31:33.033 回答