js计算精度

 1 /**
 2  * 解决两个数相加精度丢失问题
 3  * @param a
 4  * @param b
 5  * @returns {Number}
 6  */
 7 function floatAdd(a, b) {
 8     var c, d, e;
 9     if(undefined==a||null==a||""==a||isNaN(a)){a=0;}
10     if(undefined==b||null==b||""==b||isNaN(b)){b=0;}
11     try {
12         c = a.toString().split(".")[1].length;
13     } catch (f) {
14         c = 0;
15     }
16     try {
17         d = b.toString().split(".")[1].length;
18     } catch (f) {
19         d = 0;
20     }
21     e = Math.pow(10, Math.max(c, d));
22     return  (floatMul(a, e) + floatMul(b, e)) / e;
23 }
24 /**
25  * 解决两个数相减精度丢失问题
26  * @param a
27  * @param b
28  * @returns {Number}
29  */
30 function floatSub(a, b) {
31     var c, d, e;
32     if(undefined==a||null==a||""==a||isNaN(a)){a=0;}
33     if(undefined==b||null==b||""==b||isNaN(b)){b=0;}
34     try {
35         c = a.toString().split(".")[1].length;
36     } catch (f) {
37         c = 0;
38     }
39     try {
40         d = b.toString().split(".")[1].length;
41     } catch (f) {
42         d = 0;
43     }
44     e = Math.pow(10, Math.max(c, d));
45     return (floatMul(a, e) - floatMul(b, e)) / e;
46 }
47 /**
48  * 解决两个数相乘精度丢失问题
49  * @param a
50  * @param b
51  * @returns {Number}
52  */
53 function floatMul(a, b) {
54     var c = 0,
55         d = a.toString(),
56         e = b.toString();
57     try {
58         c += d.split(".")[1].length;
59     } catch (f) {}
60     try {
61         c += e.split(".")[1].length;
62     } catch (f) {}
63     return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
64 }
65 /**
66  * 解决两个数相除精度丢失问题
67  * @param a
68  * @param b
69  * @returns
70  */
71 function floatDiv(a, b) {
72     var c, d, e = 0,
73         f = 0;
74     try {
75         e = a.toString().split(".")[1].length;
76     } catch (g) {}
77     try {
78         f = b.toString().split(".")[1].length;
79     } catch (g) {}
80     return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), floatMul(c / d, Math.pow(10, f - e));
81 }
原文地址:https://www.cnblogs.com/onlywu/p/14185186.html