js浮点数的加减乘除存在着严重的bug
例如:在google浏览器下,0.1+0.2=0.30000000000000004
;这不是我们想要的结果。
对于这一问题的解决方案就是重写浮点数的加减乘除方法,其原理是现将浮点数转换为整数。进行加减乘数,再除以相应的倍数,使之成为对应的浮点数结果。
解决方案
//小数乘法
export const floatMul = (a, b) => {
let m = 0, n = 0, //记录a,b的小数位数
d = a + "", //字符串化
e = b + "";
try {
m = d.split(".")[1].length;
} catch (error) {
console.log(error)
}
try {
n = e.split(".")[1].length;
} catch (error) {
console.log(error)
}
let maxInt = Math.pow(10, m + n); //将数字转换为整数的最大倍数
return Number(d.replace(".", "")) * Number(e.replace(".", "")) / maxInt;
}
//小数加法
export const floatAdd = (a, b