dequanto 0.2.25 → 0.2.27
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/lib/cjs/utils/$number.js
CHANGED
|
@@ -115,6 +115,9 @@ var $number;
|
|
|
115
115
|
*/
|
|
116
116
|
function format(num, options) {
|
|
117
117
|
if (options?.abbreviation) {
|
|
118
|
+
if (Math.abs(num) < 0.01) {
|
|
119
|
+
return humanizeSmallFloat(num);
|
|
120
|
+
}
|
|
118
121
|
const K = 10 ** 3;
|
|
119
122
|
const M = 10 ** 6;
|
|
120
123
|
const B = 10 ** 9;
|
|
@@ -146,6 +149,27 @@ var $number;
|
|
|
146
149
|
return (`0x` + Number(num).toString(16));
|
|
147
150
|
}
|
|
148
151
|
$number.toHex = toHex;
|
|
152
|
+
const subscriptDigits = '₀₁₂₃₄₅₆₇₈₉';
|
|
153
|
+
function humanizeSmallFloat(value, maxDigits = 4) {
|
|
154
|
+
if (!Number.isFinite(value))
|
|
155
|
+
return String(value);
|
|
156
|
+
if (value === 0)
|
|
157
|
+
return '0';
|
|
158
|
+
const sign = value < 0 ? '-' : '';
|
|
159
|
+
const abs = Math.abs(value);
|
|
160
|
+
const str = abs.toLocaleString('en-US', {
|
|
161
|
+
useGrouping: false,
|
|
162
|
+
maximumSignificantDigits: 20,
|
|
163
|
+
});
|
|
164
|
+
// Example: 0.0000005 -> zeros = 6, rest = '5'
|
|
165
|
+
const match = str.match(/^0\.(0{4,})(\d+)/);
|
|
166
|
+
if (!match)
|
|
167
|
+
return format(value, { maximumFractionDigits: 5 });
|
|
168
|
+
const zeroCount = match[1].length;
|
|
169
|
+
const significant = match[2].slice(0, maxDigits);
|
|
170
|
+
const zeroCountSub = subscriptDigits[zeroCount];
|
|
171
|
+
return `${sign}0.0${zeroCountSub}${significant}`;
|
|
172
|
+
}
|
|
149
173
|
})($number = exports.$number || (exports.$number = {}));
|
|
150
174
|
//# sourceMappingURL=$number.js.map
|
|
151
175
|
//# sourceMappingURL=$number.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$number.js","sourceRoot":"","sources":["../../../src/utils/$number.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AACtC,uCAAoC;AAEpC,IAAiB,OAAO,
|
|
1
|
+
{"version":3,"file":"$number.js","sourceRoot":"","sources":["../../../src/utils/$number.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$number.js","sourceRoot":"","sources":["../../../src/utils/$number.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AACtC,uCAAoC;AAEpC,IAAiB,OAAO,
|
|
1
|
+
{"version":3,"file":"$number.js","sourceRoot":"","sources":["../../../src/utils/$number.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,9 @@ export var $number;
|
|
|
112
112
|
*/
|
|
113
113
|
function format(num, options) {
|
|
114
114
|
if (options?.abbreviation) {
|
|
115
|
+
if (Math.abs(num) < 0.01) {
|
|
116
|
+
return humanizeSmallFloat(num);
|
|
117
|
+
}
|
|
115
118
|
const K = 10 ** 3;
|
|
116
119
|
const M = 10 ** 6;
|
|
117
120
|
const B = 10 ** 9;
|
|
@@ -143,6 +146,27 @@ export var $number;
|
|
|
143
146
|
return (`0x` + Number(num).toString(16));
|
|
144
147
|
}
|
|
145
148
|
$number.toHex = toHex;
|
|
149
|
+
const subscriptDigits = '₀₁₂₃₄₅₆₇₈₉';
|
|
150
|
+
function humanizeSmallFloat(value, maxDigits = 4) {
|
|
151
|
+
if (!Number.isFinite(value))
|
|
152
|
+
return String(value);
|
|
153
|
+
if (value === 0)
|
|
154
|
+
return '0';
|
|
155
|
+
const sign = value < 0 ? '-' : '';
|
|
156
|
+
const abs = Math.abs(value);
|
|
157
|
+
const str = abs.toLocaleString('en-US', {
|
|
158
|
+
useGrouping: false,
|
|
159
|
+
maximumSignificantDigits: 20,
|
|
160
|
+
});
|
|
161
|
+
// Example: 0.0000005 -> zeros = 6, rest = '5'
|
|
162
|
+
const match = str.match(/^0\.(0{4,})(\d+)/);
|
|
163
|
+
if (!match)
|
|
164
|
+
return format(value, { maximumFractionDigits: 5 });
|
|
165
|
+
const zeroCount = match[1].length;
|
|
166
|
+
const significant = match[2].slice(0, maxDigits);
|
|
167
|
+
const zeroCountSub = subscriptDigits[zeroCount];
|
|
168
|
+
return `${sign}0.0${zeroCountSub}${significant}`;
|
|
169
|
+
}
|
|
146
170
|
})($number || ($number = {}));
|
|
147
171
|
//# sourceMappingURL=$number.js.map
|
|
148
172
|
//# sourceMappingURL=$number.ts.map
|
package/package.json
CHANGED
package/src/utils/$number.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { $bigint } from './$bigint';
|
|
|
4
4
|
|
|
5
5
|
export namespace $number {
|
|
6
6
|
|
|
7
|
-
export function div
|
|
7
|
+
export function div(a: number, b: number, digits: number = 5) {
|
|
8
8
|
let r = 10 ** digits;
|
|
9
9
|
return Math.round(a * r / b) / r;
|
|
10
10
|
}
|
|
@@ -14,7 +14,7 @@ export namespace $number {
|
|
|
14
14
|
* @param min: includes
|
|
15
15
|
* @param max: excludes
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
export function random(min: number, max: number) {
|
|
18
18
|
$require.True(min < max, `Random Int expects max to be greater then min: ${min}..${max}`);
|
|
19
19
|
return Math.random() * (max - min) + min;
|
|
20
20
|
}
|
|
@@ -40,7 +40,7 @@ export namespace $number {
|
|
|
40
40
|
let val = 10 ** Math.max(decimals, decimalsFromNumber);
|
|
41
41
|
return randomInt(min * val, max * val) / val;
|
|
42
42
|
}
|
|
43
|
-
export function parse
|
|
43
|
+
export function parse(mix: string | number) {
|
|
44
44
|
if (!mix) return 0;
|
|
45
45
|
if (typeof mix === 'number') {
|
|
46
46
|
return mix;
|
|
@@ -70,7 +70,7 @@ export namespace $number {
|
|
|
70
70
|
}
|
|
71
71
|
return value;
|
|
72
72
|
}
|
|
73
|
-
export function round
|
|
73
|
+
export function round(mix: string | number, digits: number = 0, round: 'ceil' | 'round' | 'floor' = 'round') {
|
|
74
74
|
let number = typeof mix === 'string' ? Number(mix) : mix;
|
|
75
75
|
if (isNaN(number)) {
|
|
76
76
|
return number;
|
|
@@ -86,7 +86,7 @@ export namespace $number {
|
|
|
86
86
|
}
|
|
87
87
|
return Math[round](val) / factor;
|
|
88
88
|
}
|
|
89
|
-
export function parseOptional
|
|
89
|
+
export function parseOptional(mix, default_ = null) {
|
|
90
90
|
if (mix == null) {
|
|
91
91
|
return default_;
|
|
92
92
|
}
|
|
@@ -108,8 +108,11 @@ export namespace $number {
|
|
|
108
108
|
* - abbreviation: Format number to *B, *M, *K
|
|
109
109
|
* - maximumFractionDigits: Parameter for toLocaleString
|
|
110
110
|
*/
|
|
111
|
-
export function format
|
|
111
|
+
export function format(num: number, options?: { abbreviation?: boolean, maximumFractionDigits?: number }) {
|
|
112
112
|
if (options?.abbreviation) {
|
|
113
|
+
if (Math.abs(num) < 0.01) {
|
|
114
|
+
return humanizeSmallFloat(num);
|
|
115
|
+
}
|
|
113
116
|
const K = 10 ** 3;
|
|
114
117
|
const M = 10 ** 6;
|
|
115
118
|
const B = 10 ** 9;
|
|
@@ -130,16 +133,39 @@ export namespace $number {
|
|
|
130
133
|
});
|
|
131
134
|
}
|
|
132
135
|
|
|
133
|
-
export function humanize
|
|
134
|
-
export function humanize
|
|
135
|
-
export function humanize
|
|
136
|
+
export function humanize(num: bigint, decimals: number)
|
|
137
|
+
export function humanize(num: number)
|
|
138
|
+
export function humanize(mix: number | bigint, decimals: number = 18) {
|
|
136
139
|
if (typeof mix === 'bigint') {
|
|
137
140
|
mix = $bigint.toEther(mix, decimals);
|
|
138
141
|
}
|
|
139
142
|
return format(mix, { abbreviation: true });
|
|
140
143
|
}
|
|
141
144
|
|
|
142
|
-
export function toHex
|
|
145
|
+
export function toHex(num: string | number | TEth.Hex | bigint): TEth.Hex {
|
|
143
146
|
return (`0x` + Number(num).toString(16)) as TEth.Hex;
|
|
144
147
|
}
|
|
148
|
+
|
|
149
|
+
const subscriptDigits = '₀₁₂₃₄₅₆₇₈₉';
|
|
150
|
+
function humanizeSmallFloat(value: number, maxDigits = 4): string {
|
|
151
|
+
if (!Number.isFinite(value)) return String(value);
|
|
152
|
+
if (value === 0) return '0';
|
|
153
|
+
|
|
154
|
+
const sign = value < 0 ? '-' : '';
|
|
155
|
+
const abs = Math.abs(value);
|
|
156
|
+
|
|
157
|
+
const str = abs.toLocaleString('en-US', {
|
|
158
|
+
useGrouping: false,
|
|
159
|
+
maximumSignificantDigits: 20,
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// Example: 0.0000005 -> zeros = 6, rest = '5'
|
|
163
|
+
const match = str.match(/^0\.(0{4,})(\d+)/);
|
|
164
|
+
if (!match) return format(value, { maximumFractionDigits: 5 });
|
|
165
|
+
|
|
166
|
+
const zeroCount = match[1].length;
|
|
167
|
+
const significant = match[2].slice(0, maxDigits);
|
|
168
|
+
const zeroCountSub = subscriptDigits[zeroCount];
|
|
169
|
+
return `${sign}0.0${zeroCountSub}${significant}`;
|
|
170
|
+
}
|
|
145
171
|
}
|