
/**
* 四则运算
* @param {*} val1 数1
* @param {*} val2 数2
* @param {*} t 四则,默认是0,0加,1减,2乘,3除
* @returns 计算结果,非法为NaN
*/
export function calculate(val1, val2, t) {
var type = t || 0
var result = 0
if (isNaN(parseFloat(val1))) {
return NaN
}
if (isNaN(parseFloat(val2))) {
return NaN
}
if (!(type == 0 || type == 1 || type == 2 || type == 3)) {
return NaN
}
if (type == 3 && val2 == 0) {
return NaN
}
var len1 = val1.toString().length - val1.toString().indexOf(".") - 1;
var len2 = val2.toString().length - val2.toString().indexOf(".") - 1;
var p = Math.max(len1, len2);
if (type == 3) {
// 避免最终求出结果的长度大于最大长度的时候导致精度丢失 开启下面
p += p - Math.min(len1, len2);
}
var float = Math.pow(10, p);
if (type == 0) {
result = ((val1 * float) + (val2 * float)) / float
} else if (type == 1) {
result = ((val1 * float) - (val2 * float)) / float
} else if (type == 2) {
result = ((val1 * float) * (val2 * float)) / (float * float)
} else if (type == 3) {
result = (val1 * float) / (val2 * float)
}
return result
}