在js中只用number类型,没有c或java中的int、double、float这种单或双精度浮点型,所以可能会出现如下情况:
正常计算:1.11*100 = 111,这样是没问题的,但在js中会出现
1.11*100 = 111.00000000000001
的情况,所以封装如下方法:
//消除js计算误差,add、reduce是传入的加减数字,reduce是被加数(被减数),s是加减符号
export function addAndsub(add : number, reduce : number, s : string, num : number) : number {
let m = Math.pow(10, num); //num是10的次幂
let res = s == '+' ? (add * m + reduce * m) / m : (add * m - reduce * m) / m;
return Math.round(res * m) / m;
}