Есть ли в JavaScript двойная точность чисел с плавающей запятой?

Я знаю, что это странный вопрос, но есть ли у JavaScript возможность работать с двойными, а не с одиночными числами с плавающей запятой? (64-битные числа с плавающей запятой против 32-битных.)


person Travis    schedule 31.08.2010    source источник


Ответы (3)


Все числа в JavaScript являются 64-битными числами с плавающей запятой.

Ссылка:

https://web.archive.org/web/20100715045519/http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference

http://www.crockford.com/javascript/survey.html

person Moin Zaman    schedule 31.08.2010
comment
Но побитовые операции преобразуют его в 32-битное целое число. - person Calmarius; 06.05.2014

Согласно спецификации ECMA-262 (ECMAScript — это спецификация для Javascript), раздел 8.5:

Тип Number имеет ровно 18437736874454810627 (то есть 264−253+3) значений, представляющих 64-разрядные значения двойной точности в формате IEEE 754, как указано в Стандарт IEEE для двоичной арифметики с плавающей запятой

Источник: http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (PDF)

person Daniel Vandersluis    schedule 31.08.2010
comment
Это единственный правильный ответ. Он ссылается и цитирует спецификацию ECMAScript, которая является единственным важным источником. Другой ответ имеет только источники, которые не являются окончательными. - person Dave F; 24.05.2018

В javascript тип number — это 64-битное число с плавающей запятой, поддерживающее стандарт IEEE 754, и оно похоже на double в C. И вы можете создавать 32-битные типизированные массивы с помощью команд ниже и управлять каждый байт в каждом компоненте путем привязки соответствующего буфера.

let a = new Float32Array(length);
let b = new Float64Array(length);

Но обратите внимание, что он не поддерживается в IE9, здесь совместимость с браузерами таблица.

Если вам нужна расширенная точность, такая как long double, вы можете использовать double.js или библиотеку decimal.js.

person Pavel Melnikov    schedule 16.09.2018