Функция слайса Javascript, возвращающая разные значения для одного и того же значения? - PullRequest
0 голосов
/ 17 марта 2019

Я решаю вопрос о хакерранке, и я столкнулся с проблемой.мой метод среза не возвращает правильное значение.Я смог воссоздать с помощью console.log.

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

console.log("9007199254740993");

почему они возвращают разные значения?

Ответы [ 2 ]

1 голос
/ 17 марта 2019

JavaScript имеет максимальный безопасный целочисленный предел 2^53 - 1 (9,007,199,254,740,991) - числа могут быть больше этого, но это не очень хорошо:

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

(приведенный фрагмент показывает, что они разные - посмотрите на пятую и последнюю цифры).

Вам нужно будет использовать экспериментальный BigInt, если вы хотите большее число.

1 голос
/ 17 марта 2019

Максимально возможное значение для номера JavaScript: 9007199254740991 .

Для работы с числами, которые больше этого, вам нужно будет использовать BigInt .

const max = Number.MAX_SAFE_INTEGER;
console.log(max);

const maxPlusTwo = max + 2;
console.log(maxPlusTwo);

const maxPlusTwoBigInt = BigInt("9007199254740993");
console.log(maxPlusTwoBigInt.toString());

Эта ссылка показывает текущий уровень встроенной поддержки BigInt.В зависимости от вашей целевой платформы вам может понадобиться использовать полифилл для функциональности BigInt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...