@keplr-wallet/unit 0.9.10 → 0.9.12-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/coin-pretty.d.ts +13 -3
- package/build/coin-pretty.js +36 -25
- package/build/coin-pretty.js.map +1 -1
- package/build/coin-pretty.spec.js +194 -9
- package/build/coin-pretty.spec.js.map +1 -1
- package/build/coin-utils.js +8 -4
- package/build/coin-utils.js.map +1 -1
- package/build/coin-utils.spec.js +16 -0
- package/build/coin-utils.spec.js.map +1 -1
- package/build/coin.js +1 -1
- package/build/coin.js.map +1 -1
- package/build/coin.spec.js +15 -0
- package/build/coin.spec.js.map +1 -1
- package/build/dec-utils.d.ts +8 -1
- package/build/dec-utils.js +22 -20
- package/build/dec-utils.js.map +1 -1
- package/build/dec-utils.spec.js +19 -0
- package/build/dec-utils.spec.js.map +1 -1
- package/build/decimal.d.ts +22 -9
- package/build/decimal.js +102 -29
- package/build/decimal.js.map +1 -1
- package/build/decimal.spec.js +296 -3
- package/build/decimal.spec.js.map +1 -1
- package/build/etc.d.ts +4 -0
- package/build/etc.js +66 -0
- package/build/etc.js.map +1 -0
- package/build/etc.spec.d.ts +1 -0
- package/build/etc.spec.js +66 -0
- package/build/etc.spec.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/int-pretty.d.ts +16 -4
- package/build/int-pretty.js +74 -36
- package/build/int-pretty.js.map +1 -1
- package/build/int-pretty.spec.js +261 -94
- package/build/int-pretty.spec.js.map +1 -1
- package/build/int.d.ts +17 -12
- package/build/int.js +69 -16
- package/build/int.js.map +1 -1
- package/build/int.spec.d.ts +1 -0
- package/build/int.spec.js +161 -0
- package/build/int.spec.js.map +1 -0
- package/build/price-pretty.d.ts +13 -3
- package/build/price-pretty.js +37 -26
- package/build/price-pretty.js.map +1 -1
- package/build/price-pretty.spec.js +59 -2
- package/build/price-pretty.spec.js.map +1 -1
- package/build/rate-pretty.d.ts +57 -0
- package/build/rate-pretty.js +128 -0
- package/build/rate-pretty.js.map +1 -0
- package/build/rate-pretty.spec.d.ts +1 -0
- package/build/rate-pretty.spec.js +38 -0
- package/build/rate-pretty.spec.js.map +1 -0
- package/package.json +3 -3
- package/src/coin-pretty.spec.ts +304 -11
- package/src/coin-pretty.ts +56 -29
- package/src/coin-utils.spec.ts +32 -0
- package/src/coin-utils.ts +12 -4
- package/src/coin.spec.ts +20 -0
- package/src/coin.ts +1 -1
- package/src/dec-utils.spec.ts +39 -0
- package/src/dec-utils.ts +25 -20
- package/src/decimal.spec.ts +361 -3
- package/src/decimal.ts +135 -56
- package/src/etc.spec.ts +73 -0
- package/src/etc.ts +73 -0
- package/src/index.ts +1 -0
- package/src/int-pretty.spec.ts +296 -101
- package/src/int-pretty.ts +87 -34
- package/src/int.spec.ts +212 -0
- package/src/int.ts +94 -26
- package/src/price-pretty.spec.ts +106 -2
- package/src/price-pretty.ts +50 -30
- package/src/rate-pretty.spec.ts +52 -0
- package/src/rate-pretty.ts +165 -0
package/build/dec-utils.d.ts
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
import { Dec } from "./decimal";
|
2
2
|
export declare class DecUtils {
|
3
3
|
static trim(dec: Dec | string): string;
|
4
|
-
|
4
|
+
protected static tenExponentNs: {
|
5
|
+
[n: string]: Dec;
|
6
|
+
};
|
7
|
+
static getTenExponentN(n: number): Dec;
|
8
|
+
static getTenExponentNInPrecisionRange(n: number): Dec;
|
9
|
+
/**
|
10
|
+
* @deprecated Use`getTenExponentNInPrecisionRange`
|
11
|
+
*/
|
5
12
|
static getPrecisionDec(precision: number): Dec;
|
6
13
|
}
|
package/build/dec-utils.js
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.DecUtils = void 0;
|
4
4
|
const decimal_1 = require("./decimal");
|
5
|
+
const int_1 = require("./int");
|
5
6
|
class DecUtils {
|
6
7
|
static trim(dec) {
|
7
8
|
let decStr = typeof dec === "string" ? dec : dec.toString();
|
@@ -23,31 +24,32 @@ class DecUtils {
|
|
23
24
|
}
|
24
25
|
return decStr;
|
25
26
|
}
|
26
|
-
static
|
27
|
-
if (
|
27
|
+
static getTenExponentN(n) {
|
28
|
+
if (n < -decimal_1.Dec.precision) {
|
29
|
+
// Dec can only handle up to precision 18.
|
30
|
+
// Anything less than 18 precision is 0, so there is a high probability of an error.
|
28
31
|
throw new Error("Too little precision");
|
29
32
|
}
|
30
|
-
if (
|
31
|
-
|
32
|
-
}
|
33
|
-
if (DecUtils.precisions[precision.toString()]) {
|
34
|
-
return DecUtils.precisions[precision.toString()];
|
35
|
-
}
|
36
|
-
let dec = new decimal_1.Dec(1);
|
37
|
-
if (precision > 0) {
|
38
|
-
for (let i = 0; i < precision; i++) {
|
39
|
-
dec = dec.mul(new decimal_1.Dec(10));
|
40
|
-
}
|
41
|
-
}
|
42
|
-
else if (precision < 0) {
|
43
|
-
for (let i = 0; i < -precision; i++) {
|
44
|
-
dec = dec.quo(new decimal_1.Dec(10));
|
45
|
-
}
|
33
|
+
if (DecUtils.tenExponentNs[n.toString()]) {
|
34
|
+
return DecUtils.tenExponentNs[n.toString()];
|
46
35
|
}
|
47
|
-
|
36
|
+
const dec = new decimal_1.Dec(10).pow(new int_1.Int(n));
|
37
|
+
DecUtils.tenExponentNs[n.toString()] = dec;
|
48
38
|
return dec;
|
49
39
|
}
|
40
|
+
static getTenExponentNInPrecisionRange(n) {
|
41
|
+
if (n > decimal_1.Dec.precision) {
|
42
|
+
throw new Error("Too much precision");
|
43
|
+
}
|
44
|
+
return DecUtils.getTenExponentN(n);
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* @deprecated Use`getTenExponentNInPrecisionRange`
|
48
|
+
*/
|
49
|
+
static getPrecisionDec(precision) {
|
50
|
+
return DecUtils.getTenExponentNInPrecisionRange(precision);
|
51
|
+
}
|
50
52
|
}
|
51
53
|
exports.DecUtils = DecUtils;
|
52
|
-
DecUtils.
|
54
|
+
DecUtils.tenExponentNs = {};
|
53
55
|
//# sourceMappingURL=dec-utils.js.map
|
package/build/dec-utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dec-utils.js","sourceRoot":"","sources":["../src/dec-utils.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;
|
1
|
+
{"version":3,"file":"dec-utils.js","sourceRoot":"","sources":["../src/dec-utils.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAChC,+BAA4B;AAE5B,MAAa,QAAQ;IACZ,MAAM,CAAC,IAAI,CAAC,GAAiB;QAClC,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE5D,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QAED,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACrB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7B;iBAAM;gBACL,MAAM;aACP;SACF;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC7C;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAIM,MAAM,CAAC,eAAe,CAAC,CAAS;QACrC,IAAI,CAAC,GAAG,CAAC,aAAG,CAAC,SAAS,EAAE;YACtB,0CAA0C;YAC1C,oFAAoF;YACpF,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QAED,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;YACxC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC7C;QAED,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC;QAE3C,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,+BAA+B,CAAC,CAAS;QACrD,IAAI,CAAC,GAAG,aAAG,CAAC,SAAS,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QAED,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,eAAe,CAAC,SAAiB;QAC7C,OAAO,QAAQ,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;;AAzDH,4BA0DC;AAjCkB,sBAAa,GAAyB,EAAE,CAAC"}
|
package/build/dec-utils.spec.js
CHANGED
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const dec_utils_1 = require("./dec-utils");
|
4
4
|
const decimal_1 = require("./decimal");
|
5
5
|
describe("Test DecUtils", () => {
|
6
|
+
it("Test trim in DecUtils", () => {
|
7
|
+
expect(dec_utils_1.DecUtils.trim("0.00100")).toBe("0.001");
|
8
|
+
expect(dec_utils_1.DecUtils.trim("0.00")).toBe("0");
|
9
|
+
expect(dec_utils_1.DecUtils.trim("-0.00100")).toBe("-0.001");
|
10
|
+
expect(dec_utils_1.DecUtils.trim("-0.00")).toBe("-0");
|
11
|
+
});
|
6
12
|
it("getPrecisionDec should return the (10^precision)", () => {
|
7
13
|
expect(dec_utils_1.DecUtils.getPrecisionDec(-1).toString()).toBe(new decimal_1.Dec("0.1").toString());
|
8
14
|
expect(dec_utils_1.DecUtils.getPrecisionDec(-5).toString()).toBe(new decimal_1.Dec("0.00001").toString());
|
@@ -24,5 +30,18 @@ describe("Test DecUtils", () => {
|
|
24
30
|
dec_utils_1.DecUtils.getPrecisionDec(-19);
|
25
31
|
}).toThrow();
|
26
32
|
});
|
33
|
+
it("getTenExponentN should return same cached result", () => {
|
34
|
+
for (let i = 0; i < 3; i++) {
|
35
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(5).toString()).toBe(new decimal_1.Dec(100000).toString());
|
36
|
+
}
|
37
|
+
});
|
38
|
+
it("Test getTenExponentN", () => {
|
39
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(0).toString()).toBe(new decimal_1.Dec("1").toString());
|
40
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(1).toString()).toBe(new decimal_1.Dec("10").toString());
|
41
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(10).toString()).toBe(new decimal_1.Dec("10000000000").toString());
|
42
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(20).toString()).toBe(new decimal_1.Dec("100000000000000000000").toString());
|
43
|
+
expect(dec_utils_1.DecUtils.getTenExponentN(-18).toString()).toBe(new decimal_1.Dec("0.000000000000000001").toString());
|
44
|
+
expect(() => dec_utils_1.DecUtils.getTenExponentN(-19)).toThrow();
|
45
|
+
});
|
27
46
|
});
|
28
47
|
//# sourceMappingURL=dec-utils.spec.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dec-utils.spec.js","sourceRoot":"","sources":["../src/dec-utils.spec.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,uCAAgC;AAEhC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAC1B,CAAC;QACF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAC9B,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACjD,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
1
|
+
{"version":3,"file":"dec-utils.spec.js","sourceRoot":"","sources":["../src/dec-utils.spec.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,uCAAgC;AAEhC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,oBAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,oBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,CAAC,oBAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,oBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAC1B,CAAC;QACF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAC9B,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACjD,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,GAAG,EAAE;YACV,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACjD,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAC3B,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACjD,IAAI,aAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CACxB,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACjD,IAAI,aAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CACzB,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAClC,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAClD,IAAI,aAAG,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE,CAC5C,CAAC;QAEF,MAAM,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACnD,IAAI,aAAG,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAC3C,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/build/decimal.d.ts
CHANGED
@@ -1,10 +1,18 @@
|
|
1
1
|
import bigInteger from "big-integer";
|
2
2
|
import { Int } from "./int";
|
3
3
|
export declare class Dec {
|
4
|
-
static readonly precision
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
static readonly precision = 18;
|
5
|
+
protected static readonly decimalPrecisionBits = 60;
|
6
|
+
protected static readonly maxDec: bigInteger.BigInteger;
|
7
|
+
protected static readonly precisionMultipliers: {
|
8
|
+
[key: string]: bigInteger.BigInteger | undefined;
|
9
|
+
};
|
10
|
+
protected static calcPrecisionMultiplier(prec: number): bigInteger.BigInteger;
|
11
|
+
protected static reduceDecimalsFromString(str: string): {
|
12
|
+
res: string;
|
13
|
+
isDownToZero: boolean;
|
14
|
+
};
|
15
|
+
protected int: bigInteger.BigInteger;
|
8
16
|
/**
|
9
17
|
* Create a new Dec from integer with decimal place at prec
|
10
18
|
* @param int - Parse a number | bigInteger | string into a Dec.
|
@@ -12,6 +20,7 @@ export declare class Dec {
|
|
12
20
|
* @param prec - Precision
|
13
21
|
*/
|
14
22
|
constructor(int: bigInteger.BigNumber | Int, prec?: number);
|
23
|
+
protected checkBitLen(): void;
|
15
24
|
isZero(): boolean;
|
16
25
|
isNegative(): boolean;
|
17
26
|
isPositive(): boolean;
|
@@ -42,26 +51,30 @@ export declare class Dec {
|
|
42
51
|
abs(): Dec;
|
43
52
|
add(d2: Dec): Dec;
|
44
53
|
sub(d2: Dec): Dec;
|
54
|
+
pow(n: Int): Dec;
|
45
55
|
mul(d2: Dec): Dec;
|
46
56
|
mulTruncate(d2: Dec): Dec;
|
47
|
-
|
57
|
+
protected mulRaw(d2: Dec): Dec;
|
48
58
|
quo(d2: Dec): Dec;
|
49
59
|
quoTruncate(d2: Dec): Dec;
|
50
60
|
quoRoundUp(d2: Dec): Dec;
|
51
|
-
|
61
|
+
protected quoRaw(d2: Dec): Dec;
|
52
62
|
isInteger(): boolean;
|
53
63
|
/**
|
54
64
|
* Remove a Precision amount of rightmost digits and perform bankers rounding
|
55
65
|
* on the remainder (gaussian rounding) on the digits which have been removed.
|
56
66
|
*/
|
57
|
-
|
58
|
-
|
67
|
+
protected chopPrecisionAndRound(): bigInteger.BigInteger;
|
68
|
+
protected chopPrecisionAndRoundUp(): bigInteger.BigInteger;
|
59
69
|
/**
|
60
70
|
* Similar to chopPrecisionAndRound, but always rounds down
|
61
71
|
*/
|
62
|
-
|
72
|
+
protected chopPrecisionAndTruncate(): bigInteger.BigInteger;
|
63
73
|
toString(prec?: number, locale?: boolean): string;
|
64
74
|
round(): Int;
|
65
75
|
roundUp(): Int;
|
66
76
|
truncate(): Int;
|
77
|
+
roundDec(): Dec;
|
78
|
+
roundUpDec(): Dec;
|
79
|
+
truncateDec(): Dec;
|
67
80
|
}
|
package/build/decimal.js
CHANGED
@@ -7,6 +7,7 @@ exports.Dec = void 0;
|
|
7
7
|
const big_integer_1 = __importDefault(require("big-integer"));
|
8
8
|
const int_1 = require("./int");
|
9
9
|
const coin_utils_1 = require("./coin-utils");
|
10
|
+
const etc_1 = require("./etc");
|
10
11
|
class Dec {
|
11
12
|
/**
|
12
13
|
* Create a new Dec from integer with decimal place at prec
|
@@ -15,22 +16,34 @@ class Dec {
|
|
15
16
|
* @param prec - Precision
|
16
17
|
*/
|
17
18
|
constructor(int, prec = 0) {
|
19
|
+
if (typeof int === "number") {
|
20
|
+
int = int.toString();
|
21
|
+
}
|
18
22
|
if (typeof int === "string") {
|
19
23
|
if (int.length === 0) {
|
20
24
|
throw new Error("empty string");
|
21
25
|
}
|
22
|
-
if (
|
23
|
-
|
26
|
+
if (!etc_1.isValidDecimalString(int)) {
|
27
|
+
if (etc_1.isExponentDecString(int)) {
|
28
|
+
int = etc_1.exponentDecStringToDecString(int);
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
throw new Error(`invalid decimal: ${int}`);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
// Even if an input with more than 18 decimals, it does not throw an error and ignores the rest.
|
35
|
+
const reduced = Dec.reduceDecimalsFromString(int);
|
36
|
+
if (reduced.isDownToZero) {
|
37
|
+
// However, as a result, if the input becomes 0, a problem may occur in mul or quo. In this case, print a warning.
|
38
|
+
console.log(`WARNING: Got ${int}. Dec can only handle up to 18 decimals. However, since the decimal point of the input exceeds 18 digits, the remainder is discarded. As a result, input becomes 0.`);
|
24
39
|
}
|
40
|
+
int = reduced.res;
|
25
41
|
if (int.indexOf(".") >= 0) {
|
26
42
|
prec = int.length - int.indexOf(".") - 1;
|
27
43
|
int = int.replace(".", "");
|
28
44
|
}
|
29
45
|
this.int = big_integer_1.default(int);
|
30
46
|
}
|
31
|
-
else if (typeof int === "number") {
|
32
|
-
this.int = big_integer_1.default(int);
|
33
|
-
}
|
34
47
|
else if (int instanceof int_1.Int) {
|
35
48
|
this.int = big_integer_1.default(int.toString());
|
36
49
|
}
|
@@ -40,24 +53,51 @@ class Dec {
|
|
40
53
|
else {
|
41
54
|
this.int = big_integer_1.default(int);
|
42
55
|
}
|
43
|
-
this.int = this.int.multiply(Dec.calcPrecisionMultiplier(
|
56
|
+
this.int = this.int.multiply(Dec.calcPrecisionMultiplier(prec));
|
57
|
+
this.checkBitLen();
|
44
58
|
}
|
45
59
|
static calcPrecisionMultiplier(prec) {
|
46
|
-
if (prec
|
60
|
+
if (prec < 0) {
|
47
61
|
throw new Error("Invalid prec");
|
48
62
|
}
|
49
|
-
if (prec
|
63
|
+
if (prec > Dec.precision) {
|
50
64
|
throw new Error("Too much precision");
|
51
65
|
}
|
52
66
|
if (Dec.precisionMultipliers[prec.toString()]) {
|
53
67
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
54
68
|
return Dec.precisionMultipliers[prec.toString()];
|
55
69
|
}
|
56
|
-
const zerosToAdd = Dec.precision
|
70
|
+
const zerosToAdd = Dec.precision - prec;
|
57
71
|
const multiplier = big_integer_1.default(10).pow(zerosToAdd);
|
58
72
|
Dec.precisionMultipliers[prec.toString()] = multiplier;
|
59
73
|
return multiplier;
|
60
74
|
}
|
75
|
+
static reduceDecimalsFromString(str) {
|
76
|
+
const decimalPointIndex = str.indexOf(".");
|
77
|
+
if (decimalPointIndex < 0) {
|
78
|
+
return {
|
79
|
+
res: str,
|
80
|
+
isDownToZero: false,
|
81
|
+
};
|
82
|
+
}
|
83
|
+
const exceededDecimals = str.length - 1 - decimalPointIndex - Dec.precision;
|
84
|
+
if (exceededDecimals <= 0) {
|
85
|
+
return {
|
86
|
+
res: str,
|
87
|
+
isDownToZero: false,
|
88
|
+
};
|
89
|
+
}
|
90
|
+
const res = str.slice(0, str.length - exceededDecimals);
|
91
|
+
return {
|
92
|
+
res,
|
93
|
+
isDownToZero: /^[0.]*$/.test(res),
|
94
|
+
};
|
95
|
+
}
|
96
|
+
checkBitLen() {
|
97
|
+
if (this.int.abs().gt(Dec.maxDec)) {
|
98
|
+
throw new Error(`Integer out of range ${this.int.toString()}`);
|
99
|
+
}
|
100
|
+
}
|
61
101
|
isZero() {
|
62
102
|
return this.int.eq(big_integer_1.default(0));
|
63
103
|
}
|
@@ -98,46 +138,63 @@ class Dec {
|
|
98
138
|
* reverse the decimal sign.
|
99
139
|
*/
|
100
140
|
neg() {
|
101
|
-
return new Dec(this.int.negate(), Dec.precision
|
141
|
+
return new Dec(this.int.negate(), Dec.precision);
|
102
142
|
}
|
103
143
|
/**
|
104
144
|
* Returns the absolute value of a decimals.
|
105
145
|
*/
|
106
146
|
abs() {
|
107
|
-
return new Dec(this.int.abs(), Dec.precision
|
147
|
+
return new Dec(this.int.abs(), Dec.precision);
|
108
148
|
}
|
109
149
|
add(d2) {
|
110
|
-
return new Dec(this.int.add(d2.int), Dec.precision
|
150
|
+
return new Dec(this.int.add(d2.int), Dec.precision);
|
111
151
|
}
|
112
152
|
sub(d2) {
|
113
|
-
return new Dec(this.int.subtract(d2.int), Dec.precision
|
153
|
+
return new Dec(this.int.subtract(d2.int), Dec.precision);
|
154
|
+
}
|
155
|
+
pow(n) {
|
156
|
+
if (n.isZero()) {
|
157
|
+
return new Dec(1);
|
158
|
+
}
|
159
|
+
if (n.isNegative()) {
|
160
|
+
return new Dec(1).quo(this.pow(n.abs()));
|
161
|
+
}
|
162
|
+
let base = new Dec(this.int, Dec.precision);
|
163
|
+
let tmp = new Dec(1);
|
164
|
+
for (let i = n; i.gt(new int_1.Int(1)); i = i.div(new int_1.Int(2))) {
|
165
|
+
if (!i.mod(new int_1.Int(2)).isZero()) {
|
166
|
+
tmp = tmp.mul(base);
|
167
|
+
}
|
168
|
+
base = base.mul(base);
|
169
|
+
}
|
170
|
+
return base.mul(tmp);
|
114
171
|
}
|
115
172
|
mul(d2) {
|
116
|
-
return new Dec(this.mulRaw(d2).chopPrecisionAndRound(), Dec.precision
|
173
|
+
return new Dec(this.mulRaw(d2).chopPrecisionAndRound(), Dec.precision);
|
117
174
|
}
|
118
175
|
mulTruncate(d2) {
|
119
|
-
return new Dec(this.mulRaw(d2).chopPrecisionAndTruncate(), Dec.precision
|
176
|
+
return new Dec(this.mulRaw(d2).chopPrecisionAndTruncate(), Dec.precision);
|
120
177
|
}
|
121
178
|
mulRaw(d2) {
|
122
|
-
return new Dec(this.int.multiply(d2.int), Dec.precision
|
179
|
+
return new Dec(this.int.multiply(d2.int), Dec.precision);
|
123
180
|
}
|
124
181
|
quo(d2) {
|
125
|
-
return new Dec(this.quoRaw(d2).chopPrecisionAndRound(), Dec.precision
|
182
|
+
return new Dec(this.quoRaw(d2).chopPrecisionAndRound(), Dec.precision);
|
126
183
|
}
|
127
184
|
quoTruncate(d2) {
|
128
|
-
return new Dec(this.quoRaw(d2).chopPrecisionAndTruncate(), Dec.precision
|
185
|
+
return new Dec(this.quoRaw(d2).chopPrecisionAndTruncate(), Dec.precision);
|
129
186
|
}
|
130
187
|
quoRoundUp(d2) {
|
131
|
-
return new Dec(this.quoRaw(d2).chopPrecisionAndRoundUp(), Dec.precision
|
188
|
+
return new Dec(this.quoRaw(d2).chopPrecisionAndRoundUp(), Dec.precision);
|
132
189
|
}
|
133
190
|
quoRaw(d2) {
|
134
|
-
const precision = Dec.calcPrecisionMultiplier(
|
191
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
135
192
|
// multiply precision twice
|
136
193
|
const mul = this.int.multiply(precision).multiply(precision);
|
137
|
-
return new Dec(mul.divide(d2.int), Dec.precision
|
194
|
+
return new Dec(mul.divide(d2.int), Dec.precision);
|
138
195
|
}
|
139
196
|
isInteger() {
|
140
|
-
const precision = Dec.calcPrecisionMultiplier(
|
197
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
141
198
|
return this.int.remainder(precision).equals(big_integer_1.default(0));
|
142
199
|
}
|
143
200
|
/**
|
@@ -151,7 +208,7 @@ class Dec {
|
|
151
208
|
const choped = absoulteDec.chopPrecisionAndRound();
|
152
209
|
return choped.negate();
|
153
210
|
}
|
154
|
-
const precision = Dec.calcPrecisionMultiplier(
|
211
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
155
212
|
const fivePrecision = precision.divide(big_integer_1.default(2));
|
156
213
|
// Get the truncated quotient and remainder
|
157
214
|
const { quotient, remainder } = this.int.divmod(precision);
|
@@ -183,7 +240,7 @@ class Dec {
|
|
183
240
|
const choped = absoulteDec.chopPrecisionAndTruncate();
|
184
241
|
return choped.negate();
|
185
242
|
}
|
186
|
-
const precision = Dec.calcPrecisionMultiplier(
|
243
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
187
244
|
// Get the truncated quotient and remainder
|
188
245
|
const { quotient, remainder } = this.int.divmod(precision);
|
189
246
|
// If remainder is zero
|
@@ -196,15 +253,15 @@ class Dec {
|
|
196
253
|
* Similar to chopPrecisionAndRound, but always rounds down
|
197
254
|
*/
|
198
255
|
chopPrecisionAndTruncate() {
|
199
|
-
const precision = Dec.calcPrecisionMultiplier(
|
256
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
200
257
|
return this.int.divide(precision);
|
201
258
|
}
|
202
|
-
toString(prec = Dec.precision
|
203
|
-
const precision = Dec.calcPrecisionMultiplier(
|
259
|
+
toString(prec = Dec.precision, locale = false) {
|
260
|
+
const precision = Dec.calcPrecisionMultiplier(0);
|
204
261
|
const int = this.int.abs();
|
205
262
|
const { quotient: integer, remainder: fraction } = int.divmod(precision);
|
206
263
|
let fractionStr = fraction.toString(10);
|
207
|
-
for (let i = 0, l = fractionStr.length; i < Dec.precision
|
264
|
+
for (let i = 0, l = fractionStr.length; i < Dec.precision - l; i++) {
|
208
265
|
fractionStr = "0" + fractionStr;
|
209
266
|
}
|
210
267
|
fractionStr = fractionStr.substring(0, prec);
|
@@ -226,8 +283,24 @@ class Dec {
|
|
226
283
|
truncate() {
|
227
284
|
return new int_1.Int(this.chopPrecisionAndTruncate());
|
228
285
|
}
|
286
|
+
roundDec() {
|
287
|
+
return new Dec(this.chopPrecisionAndRound(), 0);
|
288
|
+
}
|
289
|
+
roundUpDec() {
|
290
|
+
return new Dec(this.chopPrecisionAndRoundUp(), 0);
|
291
|
+
}
|
292
|
+
truncateDec() {
|
293
|
+
return new Dec(this.chopPrecisionAndTruncate(), 0);
|
294
|
+
}
|
229
295
|
}
|
230
296
|
exports.Dec = Dec;
|
231
|
-
Dec.precision =
|
297
|
+
Dec.precision = 18;
|
298
|
+
// Bytes required to represent the above precision is 18.
|
299
|
+
// Ceiling[Log2[999 999 999 999 999 999]]
|
300
|
+
Dec.decimalPrecisionBits = 60;
|
301
|
+
// Max bit length for `Dec` is 256 + 60(decimalPrecisionBits)
|
302
|
+
// The int in the `Dec` is handled as integer assuming that it has 18 precision.
|
303
|
+
// (2 ** (256 + 60) - 1)
|
304
|
+
Dec.maxDec = big_integer_1.default("133499189745056880149688856635597007162669032647290798121690100488888732861290034376435130433535");
|
232
305
|
Dec.precisionMultipliers = {};
|
233
306
|
//# sourceMappingURL=decimal.js.map
|
package/build/decimal.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAqC;AACrC,+BAA4B;AAC5B,6CAAyC;
|
1
|
+
{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"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"}
|