/**
- 解决两个数相加精度失落问题
- @param a
- @param b
- @returns {Number}
*/
export function floatAdd(a, b) { var c, d, e; if (undefined == a || null == a || "" == a || isNaN(a)) { a = 0; } if (undefined == b || null == b || "" == b || isNaN(b)) { b = 0; } try { c = a.toString().split(".")[1].length; } catch (f) { c = 0; } try { d = b.toString().split(".")[1].length; } catch (f) { d = 0; } e = Math.pow(10, Math.max(c, d)); return (floatMul(a, e) + floatMul(b, e)) / e;}
/**
- 解决两个数相减精度失落问题
- @param a
- @param b
- @returns {Number}
*/
export function floatSub(a, b) { var c, d, e; if (undefined == a || null == a || "" == a || isNaN(a)) { a = 0; } if (undefined == b || null == b || "" == b || isNaN(b)) { b = 0; } try { c = a.toString().split(".")[1].length; } catch (f) { c = 0; } try { d = b.toString().split(".")[1].length; } catch (f) { d = 0; } e = Math.pow(10, Math.max(c, d)); return (floatMul(a, e) - floatMul(b, e)) / e;}
/**
- 解决两个数相乘精度失落问题
- @param a
- @param b
- @returns {Number}
*/
export function floatMul(a = 0, b = 0) { var c = 0, d = a.toString(), e = b.toString(); try { c += d.split(".")[1].length; } catch (f) { } try { c += e.split(".")[1].length; } catch (f) { } return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);}
/**
- 解决两个数相除精度失落问题
- @param a
- @param b
- @returns
*/
export function floatDiv(a, b) { var c, d, e = 0, f = 0; try { e = a.toString().split(".")[1].length; } catch (g) { } try { f = b.toString().split(".")[1].length; } catch (g) { } return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), floatMul(c / d, Math.pow(10, f - e));}