Имеет ли JavaScript двойную точность чисел с плавающей точкой? - PullRequest
30 голосов
/ 31 августа 2010

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

Ответы [ 3 ]

35 голосов
/ 31 августа 2010

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

Ссылка:

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

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

32 голосов
/ 31 августа 2010

В соответствии со спецификацией ECMA-262 (ECMAScript - это спецификация для Javascript), раздел 8.5:

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

Источник: http://www.ecma -international.org / публикации / файлы / ecma-st / ECMA-262.pdf (PDF)

0 голосов
/ 16 сентября 2018

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

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

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

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

...