UNPKG

1.52 kBJavaScriptView Raw
1import Decimal from 'decimal.js';
2import { factory } from '../../utils/factory.js';
3var name = 'BigNumber';
4var dependencies = ['?on', 'config'];
5export var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6 var {
7 on,
8 config
9 } = _ref;
10 var EUCLID = 9; // Use euclidian division for mod calculation
11
12 var BigNumber = Decimal.clone({
13 precision: config.precision,
14 modulo: EUCLID
15 });
16 /**
17 * Attach type information
18 */
19
20 BigNumber.prototype.type = 'BigNumber';
21 BigNumber.prototype.isBigNumber = true;
22 /**
23 * Get a JSON representation of a BigNumber containing
24 * type information
25 * @returns {Object} Returns a JSON object structured as:
26 * `{"mathjs": "BigNumber", "value": "0.2"}`
27 */
28
29 BigNumber.prototype.toJSON = function () {
30 return {
31 mathjs: 'BigNumber',
32 value: this.toString()
33 };
34 };
35 /**
36 * Instantiate a BigNumber from a JSON object
37 * @param {Object} json a JSON object structured as:
38 * `{"mathjs": "BigNumber", "value": "0.2"}`
39 * @return {BigNumber}
40 */
41
42
43 BigNumber.fromJSON = function (json) {
44 return new BigNumber(json.value);
45 };
46
47 if (on) {
48 // listen for changed in the configuration, automatically apply changed precision
49 on('config', function (curr, prev) {
50 if (curr.precision !== prev.precision) {
51 BigNumber.config({
52 precision: curr.precision
53 });
54 }
55 });
56 }
57
58 return BigNumber;
59}, {
60 isClass: true
61});
\No newline at end of file