Получите номер 18437736874454810627

Тип номера ECMAScript имеет точно значения 18437736874454810627.

Почему они пришли к этому номеру (18437736874454810627)? Другими словами, поскольку компьютеры обычно основаны на двоичной системе, то почти все числа (например, бит, байт, int16, int32 и т.д.) Основаны на 2. Но я не вижу, как мы можем получить от 18437736874454810627 до 2.

Ответ 1

Поскольку число с плавающей запятой, используемое JavaScript, имеет фиксированное количество бит, используемое как описано в стандарт ECMA (стр. 41 из PDF или стр. 29, как написано в нижнем колонтитуле).

Тип номера имеет точно 18437736874454810627 (то есть 2 ^ 64 - 2 ^ 53 + 3) значения, представляющие значения IEEE 754 с двойной точностью 64-битного формата, как указано в стандарте IEEE для двоичной арифметики с плавающей запятой, за исключением того, что значения 9007199254740990 (то есть 2 ^ 53 - 2) отличные значения "Not-a-Number" стандарта IEEE представлены в ECMAScript как единственное специальное значение NaN.

Ответ 2

В соответствии с моим пониманием к спецификации ECMA Раздел 8.5 - Тип номера, есть 3 вида представлений на номер Javascript, а именно:

  • NaN
  • бесконечность
  • конечные числа

Повторим еще несколько выдержек из спецификации:

9007199254740990 (т.е. 2 53 -2) разные значения "Not-a-Number" стандарта IEEE представлены в ECMAScript как одно специальное значение NaN. [...] все значения NaN неотличимы друг от друга.

Обратите внимание, что NaN фактически 1 единственное специальное значение, хотя для представления NaN используются несколько значений.

Есть еще два специальных значения, называемых положительной бесконечностью и отрицательной бесконечностью.

Это просто и очевидно, что мы имеем 2 значения бесконечности.

Остальные 18437736874454810624 (т.е. значения 2 64 -2 53) называются конечными числами.

И есть 18437736874454810624 конечные числа.


Итак, суммируя все числа: 1 + 2 + 18437736874454810624 = 18437736874454810627

Ответ 3

JavaScript использует IEEE-754, которые предлагают только 53 бит точности. См. Таблицу "Double Precision" в этой статье. Также см. fooobar.com/questions/372/....

Ответ 4

В javascript, 9007199254740990 этих значений NaN. (Стандарт IEEE для 64-разрядной двоичной арифметики с плавающей запятой определяет значение для всех, кроме одного NaN)