@keplr-wallet/unit 0.9.10-rc.0 → 0.9.11-rc.3

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.
Files changed (76) hide show
  1. package/build/coin-pretty.d.ts +13 -3
  2. package/build/coin-pretty.js +36 -25
  3. package/build/coin-pretty.js.map +1 -1
  4. package/build/coin-pretty.spec.js +194 -9
  5. package/build/coin-pretty.spec.js.map +1 -1
  6. package/build/coin-utils.js +8 -4
  7. package/build/coin-utils.js.map +1 -1
  8. package/build/coin-utils.spec.js +16 -0
  9. package/build/coin-utils.spec.js.map +1 -1
  10. package/build/coin.js +1 -1
  11. package/build/coin.js.map +1 -1
  12. package/build/coin.spec.js +15 -0
  13. package/build/coin.spec.js.map +1 -1
  14. package/build/dec-utils.d.ts +8 -1
  15. package/build/dec-utils.js +22 -20
  16. package/build/dec-utils.js.map +1 -1
  17. package/build/dec-utils.spec.js +19 -0
  18. package/build/dec-utils.spec.js.map +1 -1
  19. package/build/decimal.d.ts +22 -9
  20. package/build/decimal.js +102 -29
  21. package/build/decimal.js.map +1 -1
  22. package/build/decimal.spec.js +296 -3
  23. package/build/decimal.spec.js.map +1 -1
  24. package/build/etc.d.ts +4 -0
  25. package/build/etc.js +66 -0
  26. package/build/etc.js.map +1 -0
  27. package/build/etc.spec.d.ts +1 -0
  28. package/build/etc.spec.js +66 -0
  29. package/build/etc.spec.js.map +1 -0
  30. package/build/index.d.ts +1 -0
  31. package/build/index.js +1 -0
  32. package/build/index.js.map +1 -1
  33. package/build/int-pretty.d.ts +16 -4
  34. package/build/int-pretty.js +74 -36
  35. package/build/int-pretty.js.map +1 -1
  36. package/build/int-pretty.spec.js +261 -94
  37. package/build/int-pretty.spec.js.map +1 -1
  38. package/build/int.d.ts +17 -12
  39. package/build/int.js +69 -16
  40. package/build/int.js.map +1 -1
  41. package/build/int.spec.d.ts +1 -0
  42. package/build/int.spec.js +161 -0
  43. package/build/int.spec.js.map +1 -0
  44. package/build/price-pretty.d.ts +13 -3
  45. package/build/price-pretty.js +37 -26
  46. package/build/price-pretty.js.map +1 -1
  47. package/build/price-pretty.spec.js +59 -2
  48. package/build/price-pretty.spec.js.map +1 -1
  49. package/build/rate-pretty.d.ts +57 -0
  50. package/build/rate-pretty.js +128 -0
  51. package/build/rate-pretty.js.map +1 -0
  52. package/build/rate-pretty.spec.d.ts +1 -0
  53. package/build/rate-pretty.spec.js +38 -0
  54. package/build/rate-pretty.spec.js.map +1 -0
  55. package/package.json +3 -3
  56. package/src/coin-pretty.spec.ts +304 -11
  57. package/src/coin-pretty.ts +56 -29
  58. package/src/coin-utils.spec.ts +32 -0
  59. package/src/coin-utils.ts +12 -4
  60. package/src/coin.spec.ts +20 -0
  61. package/src/coin.ts +1 -1
  62. package/src/dec-utils.spec.ts +39 -0
  63. package/src/dec-utils.ts +25 -20
  64. package/src/decimal.spec.ts +361 -3
  65. package/src/decimal.ts +135 -56
  66. package/src/etc.spec.ts +73 -0
  67. package/src/etc.ts +73 -0
  68. package/src/index.ts +1 -0
  69. package/src/int-pretty.spec.ts +296 -101
  70. package/src/int-pretty.ts +87 -34
  71. package/src/int.spec.ts +212 -0
  72. package/src/int.ts +94 -26
  73. package/src/price-pretty.spec.ts +106 -2
  74. package/src/price-pretty.ts +50 -30
  75. package/src/rate-pretty.spec.ts +52 -0
  76. package/src/rate-pretty.ts +165 -0
@@ -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
- private static precisions;
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
  }
@@ -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 getPrecisionDec(precision) {
27
- if (precision < -18) {
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 (precision > 18) {
31
- throw new Error("Too much precision");
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
- DecUtils.precisions[precision.toString()] = dec;
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.precisions = {};
54
+ DecUtils.tenExponentNs = {};
53
55
  //# sourceMappingURL=dec-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dec-utils.js","sourceRoot":"","sources":["../src/dec-utils.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAEhC,MAAa,QAAQ;IACnB,MAAM,CAAC,IAAI,CAAC,GAAiB;QAC3B,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;IAID,MAAM,CAAC,eAAe,CAAC,SAAiB;QACtC,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QACD,IAAI,SAAS,GAAG,EAAE,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC7C,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,GAAG,GAAG,IAAI,aAAG,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,SAAS,GAAG,CAAC,EAAE;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aAC5B;SACF;aAAM,IAAI,SAAS,GAAG,CAAC,EAAE;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;gBACnC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,aAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aAC5B;SACF;QAED,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC;QAChD,OAAO,GAAG,CAAC;IACb,CAAC;;AArDH,4BAsDC;AA7BgB,mBAAU,GAAiC,EAAE,CAAC"}
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"}
@@ -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":"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"}
@@ -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: bigInteger.BigInteger;
5
- private static readonly precisionMultipliers;
6
- private static calcPrecisionMultiplier;
7
- private int;
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
- private mulRaw;
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
- private quoRaw;
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
- private chopPrecisionAndRound;
58
- private chopPrecisionAndRoundUp;
67
+ protected chopPrecisionAndRound(): bigInteger.BigInteger;
68
+ protected chopPrecisionAndRoundUp(): bigInteger.BigInteger;
59
69
  /**
60
70
  * Similar to chopPrecisionAndRound, but always rounds down
61
71
  */
62
- private chopPrecisionAndTruncate;
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 (!/^(-?\d+\.\d+)$|^(-?\d+)$/.test(int)) {
23
- throw new Error(`invalid decimal: ${int}`);
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(big_integer_1.default(prec)));
56
+ this.int = this.int.multiply(Dec.calcPrecisionMultiplier(prec));
57
+ this.checkBitLen();
44
58
  }
45
59
  static calcPrecisionMultiplier(prec) {
46
- if (prec.lt(big_integer_1.default(0))) {
60
+ if (prec < 0) {
47
61
  throw new Error("Invalid prec");
48
62
  }
49
- if (prec.gt(Dec.precision)) {
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.minus(prec);
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
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.toJSNumber());
188
+ return new Dec(this.quoRaw(d2).chopPrecisionAndRoundUp(), Dec.precision);
132
189
  }
133
190
  quoRaw(d2) {
134
- const precision = Dec.calcPrecisionMultiplier(big_integer_1.default(0));
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.toJSNumber());
194
+ return new Dec(mul.divide(d2.int), Dec.precision);
138
195
  }
139
196
  isInteger() {
140
- const precision = Dec.calcPrecisionMultiplier(big_integer_1.default(0));
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(big_integer_1.default(0));
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(big_integer_1.default(0));
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(big_integer_1.default(0));
256
+ const precision = Dec.calcPrecisionMultiplier(0);
200
257
  return this.int.divide(precision);
201
258
  }
202
- toString(prec = Dec.precision.toJSNumber(), locale = false) {
203
- const precision = Dec.calcPrecisionMultiplier(big_integer_1.default(0));
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.toJSNumber() - l; i++) {
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 = big_integer_1.default(18);
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
@@ -1 +1 @@
1
- {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"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"}