Skip to content

Commit 2f639b1

Browse files
author
Simon he
committed
chore: add formateNum
1 parent f71190d commit 2f639b1

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/formateNum.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
export function formateNum(number: number | string, decimals: number = 2, integer: 'floor' | 'ceil' = 'ceil') {
2+
number = (number + '').replace(/[^0-9+-Ee.]/g, '');
3+
const n = !isFinite(+number) ? 0 : +number,
4+
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
5+
sep = ',',
6+
dec = '.',
7+
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'),
8+
re = /(-?\d+)(\d{3})/
9+
10+
while (re.test(s[0])) {
11+
s[0] = s[0].replace(re, "$1" + sep + "$2");
12+
}
13+
14+
if ((s[1] || '').length < prec) {
15+
s[1] = s[1] || '';
16+
s[1] += new Array(prec - s[1].length + 1).join('0');
17+
}
18+
return s.join(dec)
19+
20+
function toFixedFix(n: number, prec: number): string {
21+
const k = Math.pow(10, prec);
22+
return '' + (integer === 'ceil'
23+
? Math.ceil(n * k) / k
24+
: Math.floor(n * k) / k)
25+
};
26+
}

0 commit comments

Comments
 (0)