我使用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上测试了它们。这是因为我试图解析的数字太大了吗?
答案 0 :(得分:5)
JavaScript中的数字是浮点双精度,最多只能包含53位精度(大约16位十进制数)。您在问题中的数字是17位数,因此无法准确存储数字。
关于JavaScript syntax/Number的维基百科文章。
答案 1 :(得分:0)
这不是parseInt
的问题;对于JavaScript的Number数据类型,这个数字太长(太精确了 - 请参阅nhahtdh的答案)(证明:+"18014398241046527"
也会产生18014398241046528
)。
我认为解决这个问题的唯一方法是将数字作为字符串输入并以块的形式处理。