Recently, I encountered a floating point operation problem on the front-end. I copied a piece of floating point operation code from the Internet, and found that there were still problems during the test.
Now I have posted the modified Code to share with you.
Var FloatCalculate = {// floatAdd: function (arg1, arg2) {// addition run var r1, r2, m; try {r1 = arg1.toString (). split (". ") [1]. length} catch (e) {r1 = 0} try {r2 = arg2.toString (). split (". ") [1]. length} catch (e) {r2 = 0} m = Math. pow (10, Math. max (r1, r2); // return (arg1 * m + arg2 * m)/m return (FloatCalculate. floatMul (arg1, m) + FloatCalculate. floatMul (arg2, m)/m);}, floatSub: function (arg1, arg2 ){ // Run var r1, r2, m, n by subtraction. try {r1 = arg1.toString (). split (". ") [1]. length} catch (e) {r1 = 0} try {r2 = arg2.toString (). split (". ") [1]. length} catch (e) {r2 = 0} m = Math. pow (10, Math. max (r1, r2); // dynamic control precision length n = (r1> = r2 )? R1: r2; // return (arg1 * m-arg2 * m)/m ). toFixed (n); return (FloatCalculate. floatMul (arg1, m)-FloatCalculate. floatMul (arg2, m)/m ). toFixed (n) ;}, floatMul: function (arg1, arg2) {// run var m = 0, s1 = arg1.toString (), s2 = arg2.toString (); try {m + = s1.split (". ") [1]. length} catch (e) {}try {m + = s2.split (". ") [1]. length} catch (e) {} return Number (s1.replace (". "," ") * Number (s2.replace (". "," ")/Math. pow (10, m) ;}, floatDiv: function (arg1, arg2) {// division run var t1 = 0, t2 = 0, r1, r2; try {t1 = arg1.toString (). split (". ") [1]. length} catch (e) {}try {t2 = arg2.toString (). split (". ") [1]. length} catch (e) {}with (Math) {r1 = Number (arg1.toString (). replace (". "," "); r2 = Number (arg2.toString (). replace (". "," "); return FloatCalculate. floatMul (r1/r2), pow (10, t2-t1 ));}}}