В JavaScript как целое число представлено в макете хранилища? - PullRequest
1 голос
/ 06 октября 2011

JavaScript поставляется с 64-битными числами с плавающей запятой для всех числовых литералов, а структура и диапазон хранилища регулируются в соответствии с ITEE 754 .

С другой стороны, я узнал, что у поплавка есть диапазон от ± 10 ^ -323,3 до ~ 10 ^ 308,3 и максимально возможная точность. Целое число имеет диапазон -2 ^ 53 - 2 ^ 53 и надежную точность.

ITEE 754 объясняет поведение чисел с плавающей точкой, но меня смущает целое число в JS. Как диапазон точности генерируется из 64-битного формата данных?

[Решено] Значение сохраняется в позиции дроби. 1 is (1+0)*2^0, 2 is (1 + 0) * 2^1, 3 is (1 + 2^-1)*2^1 ... Любое число от -2 ^ 53 до 2 ^ 53 может быть точно выражено. Поскольку для всей дроби есть начальный 1, диапазон составляет от -2 ^ 53 до 2 ^ 53

Ответы [ 3 ]

1 голос
/ 06 октября 2011

На самом деле это от -2 ^ 52 до 2 ^ 52. Что происходит, так это то, что целое число на самом деле хранится в формате с плавающей запятой. На вашем URL вы можете увидеть, что из 64 бит 52 бит используются для дроби. Вот где на самом деле хранится число.

0 голосов
/ 15 ноября 2011

[Решил сам] Значение сохраняется в позиции дроби. 1 - это (1 + 0) * 2 ^ 0, 2 - (1 + 0) * 2 ^ 1, 3 - (1 + 2 ^ -1) * 2 ^ 1 ... Любое число от -2 ^ 53 до 2 ^ 53 можно выразить точно. Поскольку для всей дроби есть начальная 1, диапазон составляет от -2 ^ 53 до 2 ^ 53

0 голосов
/ 06 октября 2011

Максимально надежный означает в точности диапазон 2 ^ 52.Хотя вы можете представлять числа больше этого, вы начинаете пропускать некоторые целые числа после этой точки.

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