javascript interview question #41

True или false? Что появится в консоли?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

В JavaScript принят формат чисел с плавающей запятой двойной точности. Это значит, что максимальное целочисленное значение, которое можно сохранить в переменную, равно 2^53^ - 1 или 9007199254740991. Это число сохранено в статической константе Math.MAX_SAFE_INTEGER.

console.log(Math.MAX_SAFE_INTEGER);      // 9007199254740991
console.log(Math.pow(2, 53) - 1);        // 9007199254740991

Наличие значения Math.MAX_SAFE_INTEGER не означает, что в JS невозможно работать с большими числами. Но, если мы продолжим увеличивать число дальше, то возникнет потеря точности.

console.log(Number.MAX_SAFE_INTEGER + 1); // 9007199254740992
console.log(Number.MAX_SAFE_INTEGER + 2); // 9007199254740992

Как видишь, добавив 1 или 2 к Number.MAX_SAFE_INTEGER, мы получили одно и то же число.

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


ОТВЕТ: Произойдет округление с потерей точности. И x, и y будут равны 9007199254740992. На экране появится сообщение true.