Имеет ли JavaScript двойную точность чисел с плавающей точкой?
Я знаю, что это странный вопрос, но способен ли JavaScript работать с double, а не с одинарными числами? (64-разрядные числа с плавающей запятой против 32-разрядных.)
3 ответа
Все числа в JavaScript являются 64-битными числами с плавающей точкой.
Ref:
http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference
Согласно спецификации ECMA-262 (ECMAScript - это спецификация для Javascript), раздел 8.5:
Тип Number имеет ровно 18437736874454810627 (то есть 264−253+3) значения, представляющие значения IEEE 754 с 64-разрядным форматом двойной точности, как указано в стандарте IEEE для двоичной арифметики с плавающей запятой
Источник: http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (PDF)
В javascript type number это 64-битное число с плавающей точкой, которое поддерживает стандарт IEEE 754, и это как double в C. И вы можете создавать 32-битные типизированные массивы с помощью команд ниже и контролировать каждый байт в каждом компоненте, связывая соответствующий буфер.
let a = new Float32Array(length);
let b = new Float64Array(length);
Но обратите внимание, что это не поддерживается в IE9, здесь таблица совместимости браузера.
Если вам нужен расширенный перевод, например long double, вы можете использовать библиотеку double.js или decimal.js.