2

我正在使用 parseInt() 来获取一些大素数,但它按预期工作。例如,

parseInt("18014398241046527", 10); // Gives me 18014398241046528??
parseInt("18014398241046528", 10); // Gives me 18014398241046528
parseInt("18014398241046529", 10); // Still gives me 18014398241046528??

我在 Chrome 版本 20.0.1132.47 和 Firefox 12.0 上测试了它们。这是因为我试图解析的数字太大了吗?

4

2 回答 2

5

JavaScript 中的数字是浮点双精度,最多只能包含 53 位精度(大约 16 个十进制数字)。您在问题中的数字是 17 位数字,因此它无法准确存储该数字。

关于JavaScript 语法/数字的维基百科文章。

参考JavaScript (1.1) 标准

于 2012-07-05T06:22:59.087 回答
0

这不是问题parseInt;对于 JavaScript 的 Number 数据类型,这个数字太长(太精确 - 请参阅 nhahtdh 的答案)(证明:也+"18014398241046527"可以产生18014398241046528)。

我认为解决此问题的唯一方法是将数字作为字符串输入并分块处理。

于 2012-07-05T06:22:08.987 回答