Pull to refresh

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

Reading time1 min
Views8.8K
В 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

На этом всё

Спасибо за внимание
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+28
Comments21

Articles

Change theme settings