(С 2011 года, когда был опубликован этот ответ, многое изменилось - см. Обновления ниже)
2019-июнь Обновление
BigInt имеетбыл в V8 (Node.js и браузерах на основе Chromium) с мая 2018 года. Он должен появиться в Firefox 68 - см. билет SpiderMonkey .Также реализовано в WebKit .
BigDecimal еще не было реализовано ни одним движком.Посмотрите на альтернативную библиотеку .
2015 Обновление
Прошло более 4 лет с тех пор, как я написал этот ответ, и теперь ситуация намного сложнее.
Теперь у нас есть:
Скоро у нас будет:
Это означает, что число числовых типов, доступных в JavaScript, будет расти только от одного:
, по крайней мере, до следующего в WebAssembly :
- 8-битное целое число (со знаком и без знака)
- 16-битное целое число (со знаком и без знака)
- 32-битное целое число(подписано и не подписано)
- 64-бит целое число (со знаком и без знака)
- 32-разрядная с плавающей запятой
- 64-разрядная с плавающей запятой
(Технически внутренние представления всех целочисленных типов не имеют знака насамый низкий уровень, но различные операторы могут рассматривать их как подписанные или неподписанные, например, int32.sdiv
против int32.udiv
и т. д.)
Они доступны в типизированных массивах :
- 8-битное целое число без знака со знаком 8
- 8-битное целое число без знака
- 8-битное целое число без знака (с ограничением)
- 16-битное целое число без знака с дополнением
- 16-разрядное целое число без знака
- 32-разрядное целое число с двойным дополнением до числа со знаком
- 32-разрядное целое число без знака
- 32-разрядное число с плавающей запятой IEEE
- 64-битное число с плавающей точкой IEEE
asm.js определяет следующие числовые типы:
- int
- подписано
- без знака
- intish
- fixnum
- double
- double?
- float
- float?
- floatish
Оригинальный ответ 2011
В JavaScript есть только один тип чисел - двойной * IEEE 754прецизионное число с плавающей точкой .
См. эти вопросы, чтобы узнать некоторые последствия этого факта: