Имеет ли JavaScript двойную точность чисел с плавающей точкой?

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

3 ответа

Решение

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

Ref:

http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference

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

Согласно спецификации 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.

Другие вопросы по тегам