Я работаю в Javascript только с целыми числами (в основном добавляя числа и меняя их). Интересно, насколько велики они могут быть без потери каких-либо бит.
Например, насколько велика X может быть такой, что 1 << X будет представлять 2^X?
Ответ 1
Все числа в JavaScript на самом деле соответствуют стандарту IEEE-754 с плавающей запятой. Они имеют 53-битную мантиссу, что должно означать, что любое целочисленное значение с величиной приблизительно 9 квадриллионов или менее, а именно 9 007 199 254 740 991, будет представлено точно.
ВНИМАНИЕ: в 2018 году основные браузеры и NodeJS также работают с новым примитивным типом Javascript, BigInt, решая проблемы с целочисленным значением.
Ответ 2
Все числа в JavaScript являются 64-битными (с двойной точностью) числами с плавающей запятой.
Здесь описание формата и какие значения могут и не могут быть представлены с ним.
Ответ 3
Все ответы частично неверны - возможно, из-за новых спецификаций ES6/ES7 - и готовы, почему:
Прежде всего, в JavaScript представление числа равно 2 ^ 53 - 1, что верно для ответа @Luke, мы можем доказать это, запустив Number.MAX_SAFE_INTEGER, который покажет большое число, затем мы выполняем log2 чтобы подтвердить, что количество бит одинаково: