Все числа в JavaScript, будь то целые числа или десятичные активы, имеют число типов. Внутри программы сущность типа числа составляет 64-разрядное число плавающей запятой, которое согласуется с номером плавающей точки двойного типа в Java; Следовательно, все числа в JavaScript являются плавающими номерами. Следуя стандарту IEEE 754 (стандарт арифметической арифметической точки), диапазон значений, которые JavaScript может представлять, IS Plus или Minus 1,7976931348623157 раз 10 к мощности 308, а минимальное десятичное число, которое может быть получено, плюс или минус 5 раза 10 к мощности 324. атрибут объекта числа соответственно.
Для целых чисел, в соответствии с требованиями стандарта ECMASCRIPT (http://ecma262-5.com/els5_html.htm#section_8.5), диапазон целых чисел, который JavaScript может представлять и выполнять точные арифметические операции: до силой 53 плюса или минус 2, то есть от минимального значения -9007999 9999 9999. Максимальное значение +9007199254740992; Для целых чисел, превышающих этот диапазон, JavaScript все еще может выполнять операции, но не гарантирует точность результатов расчета. Стоит отметить, что для операций целочисленного бита (таких как смещение и другие операции) JavaScript поддерживает только 32 -разрядные целочисленные числа, то есть целые числа от -2147483648 до +2147483647.
эксперимент
Отображает абсолютное значение максимального числа и абсолютное значение минимального десятичного числа в JavaScript:
Кода -копия выглядит следующим образом:
console.log (number.max_value);
console.log (number.min_value);
Результаты: 1,7976931348623157E+308 и 5E-324.
JavaScript не может дать точный результат расчета для целых чисел за пределами мощности 53 из плюс или минус 2:
Кода -копия выглядит следующим образом:
var a = 9007199254740992;
console.log (a+3);
Правильный результат вычисления должен быть 9007199254740995, но результат расчета, данный JavaScript, составляет 9007199254740996. После попытки изменить формулу расчета, вы можете обнаружить, что до тех пор, пока целое число больше 900719925474092, ошибки в результате этого расчета будут часто. Если отклонение в точности расчета является приемлемым, последствия следующего примера будут еще более серьезными:
Кода -копия выглядит следующим образом:
var max_int = 9007199254740992;
for (var i = max_int; i <max_int +2; ++ i) {
// Бесконечная петля
}
Из -за проблем точности расчета вышеупомянутое заявление попадет в мертвую петлю.
Для операций битов JavaScript поддерживает только 32-разрядные целочисленные числа:
Кода -копия выглядит следующим образом:
var smallint = 256;
var bigint = 2200000000;
console.log (smallint / 2);
console.log (smallint >> 1);
console.log (bigint / 2);
console.log (bigint >> 1);
Можно видеть, что для целых чисел в пределах 32 бит (256) JavaScript может выполнять правильные операции битов, и результат согласуется с результатом операции деления (128). Для целых чисел, отличных от 32 бит, JavaScript может выполнять правильные операции деления (1100000000), но результаты, полученные после выполнения операций битов, далеки от правильных результатов (-1047483648).