|
1 | 1 | export const calNum = { |
2 | 2 | add(...args: (number | string)[]): number { |
3 | | - return args.reduce((total, num) => accAdd(+total, +num)) as number; |
| 3 | + return args.reduce((total, num) => accAdd(+total, +num)) as number |
4 | 4 | }, |
5 | 5 | sub(...args: (number | string)[]): number { |
6 | | - return args.reduce((total, num) => accAdd(+total, -num)) as number; |
| 6 | + return args.reduce((total, num) => accAdd(+total, -num)) as number |
7 | 7 | }, |
8 | 8 | mul(...args: (number | string)[]): number { |
9 | | - return args.reduce((total, num) => accMul(+total, +num)) as number; |
| 9 | + return args.reduce((total, num) => accMul(+total, +num)) as number |
10 | 10 | }, |
11 | 11 | div(...args: (number | string)[]): number { |
12 | | - return args.reduce((total, num) => accDiv(+total, +num)) as number; |
| 12 | + return args.reduce((total, num) => accDiv(+total, +num)) as number |
13 | 13 | }, |
14 | 14 | } |
15 | 15 |
|
16 | | - |
17 | 16 | function accAdd(arg1: number, arg2: number): number { |
18 | | - let r1, r2, m; |
| 17 | + let r1, r2 |
19 | 18 | try { |
20 | | - r1 = arg1.toString().split('.')[1].length; |
21 | | - } catch (e) { |
22 | | - r1 = 0; |
| 19 | + r1 = arg1.toString().split('.')[1].length |
| 20 | + } |
| 21 | + catch (e) { |
| 22 | + r1 = 0 |
23 | 23 | } |
24 | 24 | try { |
25 | | - r2 = arg2.toString().split('.')[1].length; |
26 | | - } catch (e) { |
27 | | - r2 = 0; |
| 25 | + r2 = arg2.toString().split('.')[1].length |
| 26 | + } |
| 27 | + catch (e) { |
| 28 | + r2 = 0 |
28 | 29 | } |
29 | | - m = Math.pow(10, Math.max(r1, r2)); |
30 | | - return (arg1 * m + arg2 * m) / m; |
31 | | -}; |
| 30 | + const m = 10 ** Math.max(r1, r2) |
| 31 | + return (arg1 * m + arg2 * m) / m |
| 32 | +} |
32 | 33 |
|
33 | 34 | function accMul(arg1: number, arg2: number): number { |
34 | | - let m = 0; |
35 | | - let s1 = arg1.toString(); |
36 | | - let s2 = arg2.toString(); |
| 35 | + let m = 0 |
| 36 | + const s1 = arg1.toString() |
| 37 | + const s2 = arg2.toString() |
37 | 38 | try { |
38 | | - m += s1.split('.')[1].length; |
39 | | - } catch (e) { } |
| 39 | + m += s1.split('.')[1].length |
| 40 | + } |
| 41 | + catch (e) { } |
40 | 42 | try { |
41 | | - m += s2.split('.')[1].length; |
42 | | - } catch (e) { } |
43 | | - return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m); |
44 | | -}; |
| 43 | + m += s2.split('.')[1].length |
| 44 | + } |
| 45 | + catch (e) { } |
| 46 | + return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / 10 ** m |
| 47 | +} |
45 | 48 |
|
46 | 49 | function accDiv(arg1: number, arg2: number): number { |
47 | | - let t1 = 0; |
48 | | - let t2 = 0; |
49 | | - let r1; let r2; |
| 50 | + let t1 = 0 |
| 51 | + let t2 = 0 |
50 | 52 | try { |
51 | | - t1 = arg1.toString().split('.')[1].length; |
52 | | - } catch (e) { } |
| 53 | + t1 = arg1.toString().split('.')[1].length |
| 54 | + } |
| 55 | + catch (e) { } |
53 | 56 | try { |
54 | | - t2 = arg2.toString().split('.')[1].length; |
55 | | - } catch (e) { } |
56 | | - r1 = Number(arg1.toString().replace('.', '')); |
57 | | - r2 = Number(arg2.toString().replace('.', '')); |
58 | | - return (r1 / r2) * Math.pow(10, t2 - t1); |
59 | | -}; |
| 57 | + t2 = arg2.toString().split('.')[1].length |
| 58 | + } |
| 59 | + catch (e) { } |
| 60 | + const r1 = Number(arg1.toString().replace('.', '')) |
| 61 | + const r2 = Number(arg2.toString().replace('.', '')) |
| 62 | + return (r1 / r2) * 10 ** (t2 - t1) |
| 63 | +} |
0 commit comments