Как стать автором
Обновить

Три нестандартных типа чисел в JavaScript и две библиотеки

Время на прочтение1 мин
Количество просмотров9K
В JavaScript по умолчанию есть один тип чисел — Number. Хотя он конечно делится на Int и Float, хотя выражается это в немногом (например, в функциях parseInt — parseFloat).
При этом большие числа (и Int и Float) укорачиваются, а дроби приводятся к десятичным и округляются. И то и другое не всегда хорошо, так что появились библиотеки, которые предлагают новые классы для необычных чисел.

BigInt

Числа (и Int и Float) укорачиваются до 15 символов. При этом в Int остальные цифры хранятся в качестве нулей. Пример:
>> 100000000000000000111
  100000000000000000000

Библиотека называется BigNumber, числа нужно передавать в форме строки. Используем:
var num = new BigNumber('100000000000000000001');
num.add(1); // 100000000000000000002

Остальное на странице библиотеки, есть большинство нужных функций (+-*/), принимают числа, строки и те же BigNumber.

BigFloat

Также есть Float, там тоже 15 символов, но при этом лишние цифры просто выбрасываются.
>> 3.14159265358979323
  3.141592653589793

Можно использовать ту же библиотеку, в том же формате:
var pi = new BigNumber('3.14159265358979323');
pi.add('0.00000000000000003'); // 3.14159265358979326


Fraction

Третий тип — это дроби. Число округляется. И из-за этого результат может испортиться.
>> 1/3
  0.3333333333333333

>> 1/3 + 2/3
  1

>> 0.3333333333333333 + 0.6666666666666666
  1


И у нас есть библиотека Fraction.js.
var a = new Fraction(1,3);
a.add( new Fraction(2,3) ); // 1

На этом всё

Спасибо за внимание
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 34: ↑31 и ↓3+28
Комментарии21

Публикации

Истории

Работа

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань