JS在有小数存在的加减乘除运算中,会出先精度问题
解决办法是将小数变为整数(乘一个整数),然后再去运算,最后再除相同的整数
例子:1.11 * 2.331
(1.1 * 10) * (2.331 * 1000) / 10 / 1000
完整的方法
numCalculate(num1,num2,opreation) {
let length1=0
let length2=0
let numStr1 = num1.toString()
if(numStr1.indexOf('.')>0){
length1 = numStr1.split('.')[1].length
}
let numStr2 = num2.toString()
if(numStr2.indexOf('.')>0){
length2 = numStr2.split('.')[1].length
}
let maxLength=length1>length2?length1:length2
let middleNum=Math.pow(10,maxLength)
if(opreation=='*'){
if(middleNum>0){
let reNum=(num1*middleNum) * (num2 * middleNum) / middleNum / middleNum
return reNum
}
return num1 * num2
}
else if(opreation=='-'){
if(middleNum>0){
let reNum=((num1*middleNum) - (num2 * middleNum)) / middleNum
return reNum
}
return num1 - num2
}
else if(opreation=='/'){
if(middleNum>0){
let reNum=((num1*middleNum) / (num2 * middleNum)) / middleNum
return reNum
}
return num1 / num2
}
else{
if(middleNum>0){
let reNum=((num1*middleNum) + (num2 * middleNum)) / middleNum
return reNum
}
return num1 + num2
}
}