JavaScript slice函数返回相同值的不同值?

时间:2019-03-17 00:24:43

标签: javascript string numbers

我在hackerrank上解决了一个问题,而我遇到了一个问题。我的slice方法未返回正确的值。我能够使用console.log重新创建。

console.log(+("9007199254740993"));

console.log("9007199254740993");

为什么它们返回不同的值?

2 个答案:

答案 0 :(得分:1)

JavaScript编号的最大可能值为9007199254740991

要处理大于此数字的数字,您需要使用BigInt

"webpack:///../core/lib/index.js"

This link显示了对BigInt的本机支持的当前级别。根据目标平台的不同,您可能需要使用Polyfill来实现BigInt功能。

答案 1 :(得分:1)

JavaScript的最大安全整数限制为2^53 - 19,007,199,254,740,991)-可能有大于此的数字,但这不是很好:

console.log(9007199254740992 + 200000000001);
console.log(Number.MAX_SAFE_INTEGER);

(上面的代码段显示它们是不同的-请查看第五位和最后一位)。

如果您想要更大的数字,则必须使用实验性的BigInt