2392.750 * 3.675 = 8793.35625
但是实际计算出来是
第一步
var toNonExponential = (num)=> {
var m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/);
return num.toFixed(Math.max(0, (m[1] || '').length - m[2]));
}
var floatMultiply = (arg1, arg2) => {
let test1 = arg1
let test2 = arg2
test1 = Number(test1);
test2 = Number(test2);
if ((!test1 && test1!==0) || (!test2 && test2!==0)) {
return null;
}
test1 = toNonExponential(test1);
test2 = toNonExponential(test2);
let n1, n2;
let r1, r2; // 小数位数
try {
r1 = test1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = test2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
n1 = Number(test1.toString().replace(".", ""));
n2 = Number(test2.toString().replace(".", ""));
return n1 * n2 / Math.pow(10, r1 + r2);
}
因为需要保留四位小数点,并进行四舍五入
function myRound(number, pricision) {
var _sign = (number < 0) ? -1 : 1;
var _pow = Math.pow(10, pricision);
return Math.round((number * _sign) * _pow) / _pow * _sign;
};
因为Math.round()对负数取整会有问题所以需要手动封装一层
使用
myRound(floatMultiply(2392.750, 3.675) ,4)