- PVSM.RU - https://www.pvsm.ru -
В JavaScript по умолчанию есть один тип чисел — Number. Хотя он конечно делится на Int и Float, хотя выражается это в немногом (например, в функциях parseInt — parseFloat).
При этом большие числа (и Int и Float) укорачиваются, а дроби приводятся к десятичным и округляются. И то и другое не всегда хорошо, так что появились библиотеки, которые предлагают новые классы для необычных чисел.
Числа (и Int и Float) укорачиваются до 15 символов. При этом в Int остальные цифры хранятся в качестве нулей. Пример:
>> 100000000000000000111
100000000000000000000
Библиотека называется BigNumber [1], числа нужно передавать в форме строки. Используем:
var num = new BigNumber('100000000000000000001');
num.add(1); // 100000000000000000002
Остальное на странице библиотеки [1], есть большинство нужных функций (+-*/), принимают числа, строки и те же BigNumber.
Также есть Float, там тоже 15 символов, но при этом лишние цифры просто выбрасываются.
>> 3.14159265358979323
3.141592653589793
Можно использовать ту же библиотеку, в том же формате:
var pi = new BigNumber('3.14159265358979323');
pi.add('0.00000000000000003'); // 3.14159265358979326
Третий тип — это дроби. Число округляется. И из-за этого результат может испортиться.
>> 1/3
0.3333333333333333
>> 1/3 + 2/3
1
>> 0.3333333333333333 + 0.6666666666666666
1
И у нас есть библиотека Fraction.js [2].
var a = new Fraction(1,3);
a.add( new Fraction(2,3) ); // 1
new Fraction('2/3');
Спасибо за внимание
Автор: Keyten
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/10758
Ссылки в тексте:
[1] BigNumber: http://jsfromhell.com/classes/bignumber
[2] Fraction.js: http://github.com/ekg/fraction.js
Нажмите здесь для печати.