@fnmain/number 1.10.0 → 1.12.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/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -19
- package/dist/index.js.map +1 -1
- package/dist/test.js +5 -1
- package/dist/test.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +59 -17
- package/src/test.ts +9 -1
package/dist/index.d.ts
CHANGED
@@ -5,17 +5,21 @@ type Options = {
|
|
5
5
|
wanYiFixed?: number;
|
6
6
|
trimEndZeros?: boolean;
|
7
7
|
nanString?: string;
|
8
|
+
withCommas?: boolean;
|
9
|
+
unit?: string;
|
8
10
|
space?: string;
|
9
11
|
};
|
10
12
|
export declare function trimTrailingZeros(numberString: string): string;
|
11
|
-
export declare function
|
12
|
-
export declare function
|
13
|
-
export declare function
|
14
|
-
export declare function
|
15
|
-
export declare function
|
13
|
+
export declare function toDigit(value: any, { fixed, withCommas, trimEndZeros, nanString }: Options): any;
|
14
|
+
export declare function toWan(value: any, { fixed, withCommas, trimEndZeros, space, unit, nanString, }?: Options): string;
|
15
|
+
export declare function toYi(value: any, { fixed, withCommas, trimEndZeros, space, unit, nanString, }?: Options): string;
|
16
|
+
export declare function toWanYi(value: any, { fixed, withCommas, trimEndZeros, space, unit, nanString, }?: Options): string;
|
17
|
+
export declare function toAuto(value: any, { fixed, wanFixed, yiFixed, wanYiFixed, withCommas, trimEndZeros, space, nanString, }?: Options): string;
|
18
|
+
export declare function toPercent(value: any, { fixed, withCommas, trimEndZeros, space, unit, nanString, }?: Options): string;
|
16
19
|
export declare function parseNumber(input: any): number;
|
17
20
|
export declare function isNumber(value: any): boolean;
|
18
21
|
export declare function isNotNumber(value: any): boolean;
|
22
|
+
export declare function addCommas(value: string): string;
|
19
23
|
export declare function formatWithCommas(value: any, { strNaN }?: {
|
20
24
|
strNaN: string;
|
21
25
|
}): string;
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAmBF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,GAAG,EACV,EAAE,KAAS,EAAE,UAAkB,EAAE,YAAoB,EAAE,SAAiB,EAAE,EAAE,OAAO,OASpF;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,IAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,IAAI,CAClB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,IAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,IAAW,EACX,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,MAAM,CACpB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAqBR;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,IAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAwD9C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE5C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE/C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;;CAAoB,GAAG,MAAM,CAMnF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,cAAc,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAOrD"}
|
package/dist/index.js
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.numberFallback = exports.removeNumberCommas = exports.formatWithCommas = exports.isNotNumber = exports.isNumber = exports.parseNumber = exports.toPercent = exports.toAuto = exports.toWanYi = exports.toYi = exports.toWan = exports.trimTrailingZeros = void 0;
|
3
|
+
exports.numberFallback = exports.removeNumberCommas = exports.formatWithCommas = exports.addCommas = exports.isNotNumber = exports.isNumber = exports.parseNumber = exports.toPercent = exports.toAuto = exports.toWanYi = exports.toYi = exports.toWan = exports.toDigit = exports.trimTrailingZeros = void 0;
|
4
|
+
function format(value, { withCommas = false, trimEndZeros = false, space, unit, }) {
|
5
|
+
let ret = value;
|
6
|
+
ret = trimEndZeros ? trimTrailingZeros(ret) : ret;
|
7
|
+
ret = withCommas ? addCommas(ret) : ret;
|
8
|
+
ret = space ? ret + space : ret;
|
9
|
+
ret = unit ? ret + unit : ret;
|
10
|
+
return ret;
|
11
|
+
}
|
4
12
|
function trimTrailingZeros(numberString) {
|
5
13
|
// Check if the string contains a decimal point
|
6
14
|
if (numberString.includes(".")) {
|
@@ -11,37 +19,47 @@ function trimTrailingZeros(numberString) {
|
|
11
19
|
return numberString;
|
12
20
|
}
|
13
21
|
exports.trimTrailingZeros = trimTrailingZeros;
|
14
|
-
function
|
22
|
+
function toDigit(value, { fixed = 0, withCommas = false, trimEndZeros = false, nanString = "NaN" }) {
|
23
|
+
value = parseNumber(value);
|
24
|
+
if (isNaN(value)) {
|
25
|
+
return nanString;
|
26
|
+
}
|
27
|
+
let ret = value.toFixed(fixed);
|
28
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
29
|
+
return ret;
|
30
|
+
}
|
31
|
+
exports.toDigit = toDigit;
|
32
|
+
function toWan(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", unit = "万", nanString = "NaN", } = {}) {
|
15
33
|
value = parseNumber(value);
|
16
34
|
if (isNaN(value)) {
|
17
35
|
return nanString;
|
18
36
|
}
|
19
37
|
let ret = (value / 10000).toFixed(fixed);
|
20
|
-
ret = trimEndZeros
|
21
|
-
return ret
|
38
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
39
|
+
return ret;
|
22
40
|
}
|
23
41
|
exports.toWan = toWan;
|
24
|
-
function toYi(value, { fixed = 0, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
42
|
+
function toYi(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", unit = "亿", nanString = "NaN", } = {}) {
|
25
43
|
value = parseNumber(value);
|
26
44
|
if (isNaN(value)) {
|
27
45
|
return nanString;
|
28
46
|
}
|
29
47
|
let ret = (value / 100000000).toFixed(fixed);
|
30
|
-
ret = trimEndZeros
|
31
|
-
return ret
|
48
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
49
|
+
return ret;
|
32
50
|
}
|
33
51
|
exports.toYi = toYi;
|
34
|
-
function toWanYi(value, { fixed = 0, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
52
|
+
function toWanYi(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", unit = "万亿", nanString = "NaN", } = {}) {
|
35
53
|
value = parseNumber(value);
|
36
54
|
if (isNaN(value)) {
|
37
55
|
return nanString;
|
38
56
|
}
|
39
57
|
let ret = (value / 1000000000000).toFixed(fixed);
|
40
|
-
ret = trimEndZeros
|
41
|
-
return ret
|
58
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
59
|
+
return ret;
|
42
60
|
}
|
43
61
|
exports.toWanYi = toWanYi;
|
44
|
-
function toAuto(value, { fixed = 0, wanFixed, yiFixed, wanYiFixed, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
62
|
+
function toAuto(value, { fixed = 0, wanFixed, yiFixed, wanYiFixed, withCommas = false, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
45
63
|
value = parseNumber(value);
|
46
64
|
if (isNaN(value)) {
|
47
65
|
return nanString;
|
@@ -49,29 +67,29 @@ function toAuto(value, { fixed = 0, wanFixed, yiFixed, wanYiFixed, trimEndZeros
|
|
49
67
|
const abs = Math.abs(value);
|
50
68
|
if (abs < 10000) {
|
51
69
|
let ret = value.toFixed(fixed);
|
52
|
-
ret =
|
70
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
53
71
|
return ret;
|
54
72
|
}
|
55
73
|
if (abs < 100000000) {
|
56
74
|
fixed = (isNumber(wanFixed) && wanFixed) || fixed;
|
57
|
-
return toWan(value, { fixed, trimEndZeros, space });
|
75
|
+
return toWan(value, { fixed, withCommas, trimEndZeros, space });
|
58
76
|
}
|
59
77
|
if (abs < 1000000000000) {
|
60
78
|
fixed = (isNumber(yiFixed) && yiFixed) || fixed;
|
61
|
-
return toYi(value, { fixed, trimEndZeros, space });
|
79
|
+
return toYi(value, { fixed, withCommas, trimEndZeros, space });
|
62
80
|
}
|
63
81
|
fixed = (isNumber(wanYiFixed) && wanYiFixed) || fixed;
|
64
|
-
return toWanYi(value, { fixed, trimEndZeros, space });
|
82
|
+
return toWanYi(value, { fixed, withCommas, trimEndZeros, space });
|
65
83
|
}
|
66
84
|
exports.toAuto = toAuto;
|
67
|
-
function toPercent(value, { fixed = 0, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
85
|
+
function toPercent(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", unit = "%", nanString = "NaN", } = {}) {
|
68
86
|
value = parseNumber(value);
|
69
87
|
if (isNaN(value)) {
|
70
88
|
return nanString;
|
71
89
|
}
|
72
90
|
let ret = (value * 100).toFixed(fixed);
|
73
|
-
ret = trimEndZeros
|
74
|
-
return ret
|
91
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
92
|
+
return ret;
|
75
93
|
}
|
76
94
|
exports.toPercent = toPercent;
|
77
95
|
function parseNumber(input) {
|
@@ -134,12 +152,16 @@ function isNotNumber(value) {
|
|
134
152
|
return !Number.isFinite(value);
|
135
153
|
}
|
136
154
|
exports.isNotNumber = isNotNumber;
|
155
|
+
function addCommas(value) {
|
156
|
+
return value.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
157
|
+
}
|
158
|
+
exports.addCommas = addCommas;
|
137
159
|
function formatWithCommas(value, { strNaN } = { strNaN: "NaN" }) {
|
138
160
|
const val = parseNumber(value);
|
139
161
|
if (isNaN(val)) {
|
140
162
|
return strNaN;
|
141
163
|
}
|
142
|
-
return val.toString()
|
164
|
+
return addCommas(val.toString());
|
143
165
|
}
|
144
166
|
exports.formatWithCommas = formatWithCommas;
|
145
167
|
function removeNumberCommas(str) {
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/test.js
CHANGED
@@ -5,8 +5,10 @@ console.log((0, index_1.toAuto)(NaN)); // NaN
|
|
5
5
|
console.log((0, index_1.toAuto)(NaN, { nanString: "invalid" })); // invalid
|
6
6
|
console.log((0, index_1.toAuto)(1234)); // 1234
|
7
7
|
console.log((0, index_1.toAuto)(12345)); // 1万
|
8
|
+
console.log((0, index_1.toWan)(12345)); // 1.23万
|
8
9
|
console.log((0, index_1.toAuto)(123456789)); // 1亿
|
9
|
-
console.log((0, index_1.
|
10
|
+
console.log((0, index_1.toYi)(123456789, { unit: "亿元" })); // 1亿元
|
11
|
+
console.log((0, index_1.toAuto)(1234, { fixed: 1, withCommas: true })); // 1,234.0
|
10
12
|
console.log((0, index_1.toAuto)(12345, { fixed: 1 })); // 1.2万
|
11
13
|
console.log((0, index_1.toAuto)(12345, { wanFixed: 2 })); // 1.23万
|
12
14
|
console.log((0, index_1.toAuto)(123456789, { fixed: 2, space: " " })); // 1.23 亿
|
@@ -47,4 +49,6 @@ console.log((0, index_1.numberFallback)(undefined, 2, 3, "abc")); // 2
|
|
47
49
|
console.log((0, index_1.numberFallback)(null, 2, 3, "abc")); // 2
|
48
50
|
console.log((0, index_1.numberFallback)(NaN, 2, 3, "abc")); // 2
|
49
51
|
console.log((0, index_1.numberFallback)(0, 2, 3, "abc")); // 0
|
52
|
+
console.log((0, index_1.toDigit)(1234567.89, { withCommas: true })); // 1,234,568
|
53
|
+
console.log((0, index_1.toDigit)(-1234567.89, { withCommas: false, fixed: 1 })); // -1234567.9
|
50
54
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
@@ -5,9 +5,28 @@ type Options = {
|
|
5
5
|
wanYiFixed?: number;
|
6
6
|
trimEndZeros?: boolean;
|
7
7
|
nanString?: string;
|
8
|
+
withCommas?: boolean;
|
9
|
+
unit?: string;
|
8
10
|
space?: string;
|
9
11
|
};
|
10
12
|
|
13
|
+
function format(
|
14
|
+
value: string,
|
15
|
+
{
|
16
|
+
withCommas = false,
|
17
|
+
trimEndZeros = false,
|
18
|
+
space,
|
19
|
+
unit,
|
20
|
+
}: { withCommas?: boolean; trimEndZeros?: boolean; space?: string; unit?: string }
|
21
|
+
) {
|
22
|
+
let ret = value;
|
23
|
+
ret = trimEndZeros ? trimTrailingZeros(ret) : ret;
|
24
|
+
ret = withCommas ? addCommas(ret) : ret;
|
25
|
+
ret = space ? ret + space : ret;
|
26
|
+
ret = unit ? ret + unit : ret;
|
27
|
+
return ret;
|
28
|
+
}
|
29
|
+
|
11
30
|
export function trimTrailingZeros(numberString: string): string {
|
12
31
|
// Check if the string contains a decimal point
|
13
32
|
if (numberString.includes(".")) {
|
@@ -18,12 +37,27 @@ export function trimTrailingZeros(numberString: string): string {
|
|
18
37
|
return numberString;
|
19
38
|
}
|
20
39
|
|
40
|
+
export function toDigit(
|
41
|
+
value: any,
|
42
|
+
{ fixed = 0, withCommas = false, trimEndZeros = false, nanString = "NaN" }: Options
|
43
|
+
) {
|
44
|
+
value = parseNumber(value);
|
45
|
+
if (isNaN(value)) {
|
46
|
+
return nanString;
|
47
|
+
}
|
48
|
+
let ret = value.toFixed(fixed);
|
49
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
50
|
+
return ret;
|
51
|
+
}
|
52
|
+
|
21
53
|
export function toWan(
|
22
54
|
value: any,
|
23
55
|
{
|
24
56
|
fixed = 0,
|
57
|
+
withCommas = false,
|
25
58
|
trimEndZeros = false,
|
26
59
|
space = "",
|
60
|
+
unit = "万",
|
27
61
|
nanString = "NaN",
|
28
62
|
}: Options = {}
|
29
63
|
): string {
|
@@ -32,16 +66,18 @@ export function toWan(
|
|
32
66
|
return nanString;
|
33
67
|
}
|
34
68
|
let ret = (value / 10000).toFixed(fixed);
|
35
|
-
ret = trimEndZeros
|
36
|
-
return ret
|
69
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
70
|
+
return ret;
|
37
71
|
}
|
38
72
|
|
39
73
|
export function toYi(
|
40
74
|
value: any,
|
41
75
|
{
|
42
76
|
fixed = 0,
|
77
|
+
withCommas = false,
|
43
78
|
trimEndZeros = false,
|
44
79
|
space = "",
|
80
|
+
unit = "亿",
|
45
81
|
nanString = "NaN",
|
46
82
|
}: Options = {}
|
47
83
|
): string {
|
@@ -50,16 +86,18 @@ export function toYi(
|
|
50
86
|
return nanString;
|
51
87
|
}
|
52
88
|
let ret = (value / 100000000).toFixed(fixed);
|
53
|
-
ret = trimEndZeros
|
54
|
-
return ret
|
89
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
90
|
+
return ret;
|
55
91
|
}
|
56
92
|
|
57
93
|
export function toWanYi(
|
58
94
|
value: any,
|
59
95
|
{
|
60
96
|
fixed = 0,
|
97
|
+
withCommas = false,
|
61
98
|
trimEndZeros = false,
|
62
99
|
space = "",
|
100
|
+
unit = "万亿",
|
63
101
|
nanString = "NaN",
|
64
102
|
}: Options = {}
|
65
103
|
): string {
|
@@ -68,8 +106,8 @@ export function toWanYi(
|
|
68
106
|
return nanString;
|
69
107
|
}
|
70
108
|
let ret = (value / 1000000000000).toFixed(fixed);
|
71
|
-
ret = trimEndZeros
|
72
|
-
return ret
|
109
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
110
|
+
return ret;
|
73
111
|
}
|
74
112
|
|
75
113
|
export function toAuto(
|
@@ -79,6 +117,7 @@ export function toAuto(
|
|
79
117
|
wanFixed,
|
80
118
|
yiFixed,
|
81
119
|
wanYiFixed,
|
120
|
+
withCommas = false,
|
82
121
|
trimEndZeros = false,
|
83
122
|
space = "",
|
84
123
|
nanString = "NaN",
|
@@ -91,27 +130,29 @@ export function toAuto(
|
|
91
130
|
const abs = Math.abs(value);
|
92
131
|
if (abs < 10000) {
|
93
132
|
let ret = value.toFixed(fixed);
|
94
|
-
ret =
|
133
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
95
134
|
return ret;
|
96
135
|
}
|
97
136
|
if (abs < 100000000) {
|
98
137
|
fixed = (isNumber(wanFixed) && wanFixed) || fixed;
|
99
|
-
return toWan(value, { fixed, trimEndZeros, space });
|
138
|
+
return toWan(value, { fixed, withCommas, trimEndZeros, space });
|
100
139
|
}
|
101
140
|
if (abs < 1000000000000) {
|
102
141
|
fixed = (isNumber(yiFixed) && yiFixed) || fixed;
|
103
|
-
return toYi(value, { fixed, trimEndZeros, space });
|
142
|
+
return toYi(value, { fixed, withCommas, trimEndZeros, space });
|
104
143
|
}
|
105
144
|
fixed = (isNumber(wanYiFixed) && wanYiFixed) || fixed;
|
106
|
-
return toWanYi(value, { fixed, trimEndZeros, space });
|
145
|
+
return toWanYi(value, { fixed, withCommas, trimEndZeros, space });
|
107
146
|
}
|
108
147
|
|
109
148
|
export function toPercent(
|
110
149
|
value: any,
|
111
150
|
{
|
112
151
|
fixed = 0,
|
152
|
+
withCommas = false,
|
113
153
|
trimEndZeros = false,
|
114
154
|
space = "",
|
155
|
+
unit = "%",
|
115
156
|
nanString = "NaN",
|
116
157
|
}: Options = {}
|
117
158
|
): string {
|
@@ -120,8 +161,8 @@ export function toPercent(
|
|
120
161
|
return nanString;
|
121
162
|
}
|
122
163
|
let ret = (value * 100).toFixed(fixed);
|
123
|
-
ret = trimEndZeros
|
124
|
-
return ret
|
164
|
+
ret = format(ret, { withCommas, trimEndZeros, space, unit });
|
165
|
+
return ret;
|
125
166
|
}
|
126
167
|
|
127
168
|
export function parseNumber(input: any): number {
|
@@ -190,15 +231,16 @@ export function isNotNumber(value: any): boolean {
|
|
190
231
|
return !Number.isFinite(value);
|
191
232
|
}
|
192
233
|
|
193
|
-
export function
|
194
|
-
value
|
195
|
-
|
196
|
-
|
234
|
+
export function addCommas(value: string): string {
|
235
|
+
return value.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
236
|
+
}
|
237
|
+
|
238
|
+
export function formatWithCommas(value: any, { strNaN } = { strNaN: "NaN" }): string {
|
197
239
|
const val = parseNumber(value);
|
198
240
|
if (isNaN(val)) {
|
199
241
|
return strNaN;
|
200
242
|
}
|
201
|
-
return val.toString()
|
243
|
+
return addCommas(val.toString());
|
202
244
|
}
|
203
245
|
|
204
246
|
export function removeNumberCommas(str: string): string {
|
package/src/test.ts
CHANGED
@@ -6,16 +6,21 @@ import {
|
|
6
6
|
parseNumber,
|
7
7
|
removeNumberCommas,
|
8
8
|
toAuto,
|
9
|
+
toDigit,
|
9
10
|
toPercent,
|
11
|
+
toWan,
|
12
|
+
toYi,
|
10
13
|
} from "./index";
|
11
14
|
|
12
15
|
console.log(toAuto(NaN)); // NaN
|
13
16
|
console.log(toAuto(NaN, { nanString: "invalid" })); // invalid
|
14
17
|
console.log(toAuto(1234)); // 1234
|
15
18
|
console.log(toAuto(12345)); // 1万
|
19
|
+
console.log(toWan(12345)); // 1.23万
|
16
20
|
console.log(toAuto(123456789)); // 1亿
|
21
|
+
console.log(toYi(123456789, { unit: "亿元" })); // 1亿元
|
17
22
|
|
18
|
-
console.log(toAuto(1234, { fixed: 1 })); //
|
23
|
+
console.log(toAuto(1234, { fixed: 1, withCommas: true })); // 1,234.0
|
19
24
|
console.log(toAuto(12345, { fixed: 1 })); // 1.2万
|
20
25
|
console.log(toAuto(12345, { wanFixed: 2 })); // 1.23万
|
21
26
|
console.log(toAuto(123456789, { fixed: 2, space: " " })); // 1.23 亿
|
@@ -62,3 +67,6 @@ console.log(numberFallback(undefined, 2, 3, "abc")); // 2
|
|
62
67
|
console.log(numberFallback(null, 2, 3, "abc")); // 2
|
63
68
|
console.log(numberFallback(NaN, 2, 3, "abc")); // 2
|
64
69
|
console.log(numberFallback(0, 2, 3, "abc")); // 0
|
70
|
+
|
71
|
+
console.log(toDigit(1234567.89, { withCommas: true })); // 1,234,568
|
72
|
+
console.log(toDigit(-1234567.89, { withCommas: false, fixed: 1 })); // -1234567.9
|