Reason: js handles the addition, subtraction, multiplication and division of decimals according to 2. On the basis of arg1, the accuracy of arg2 is expanded or inversely expanded, so the following situation will occur.
The problem of adding, subtracting, multiplication and division of decimal points in javascript (js) is a bug in js such as 0.3*1 = 0.299999999999, etc. The following lists four js algorithms that can perfectly calculate the corresponding accuracy.
function accDiv(arg1,arg2){ 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 accMul((r1/r2),pow(10,t2-t1)); } } /* Why ask about hovertree.com */ //Multiple function accMul(arg1,arg2) { 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) } //Add function accAdd(arg1,arg2){ 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 } //Subtraction function Subtr(arg1,arg2){ var r1,r2,m,n; 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)); n=(r1>=r2)?r1:r2; return ((arg1*m-arg2*m)/m).toFixed(n); }The perfect solution to the above javascript decimal accuracy loss is all the content I share with you. I hope you can give you a reference and I hope you can support Wulin.com more.