UNPKG

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