/** * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。 * * @param num1加数1 | num2加数2 */ function numadd(num1, num2) { var basenum, basenum1, basenum2; try { basenum1 = num1.tostring().split(".")[1].length; } catch (e) { basenum1 = 0; } try { basenum2 = num2.tostring().split(".")[1].length; } catch (e) { basenum2 = 0; } basenum = math.pow(10, math.max(basenum1, basenum2)); return (num1 * basenum + num2 * basenum) / basenum; }; /** * 加法运算,避免数据相减小数点后产生多位数和计算精度损失。 * * @param num1被减数 | num2减数 */ function numsub(num1, num2) { var basenum, basenum1, basenum2; var precision;// 精度 try { basenum1 = num1.tostring().split(".")[1].length; } catch (e) { basenum1 = 0; } try { basenum2 = num2.tostring().split(".")[1].length; } catch (e) { basenum2 = 0; } basenum = math.pow(10, math.max(basenum1, basenum2)); precision = (basenum1 >= basenum2) ? basenum1 : basenum2; return ((num1 * basenum - num2 * basenum) / basenum).tofixed(precision); }; /** * 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。 * * @param num1被乘数 | num2乘数 */ function nummulti(num1, num2) { var basenum = 0; try { basenum += num1.tostring().split(".")[1].length; } catch (e) { } try { basenum += num2.tostring().split(".")[1].length; } catch (e) { } return number(num1.tostring().replace(".", "")) * number(num2.tostring().replace(".", "")) / math.pow(10, basenum); }; /** * 除法运算,避免数据相除小数点后产生多位数和计算精度损失。 * * @param num1被除数 | num2除数 */ function numdiv(num1, num2) { var basenum1 = 0, basenum2 = 0; var basenum3, basenum4; try { basenum1 = num1.tostring().split(".")[1].length; } catch (e) { basenum1 = 0; } try { basenum2 = num2.tostring().split(".")[1].length; } catch (e) { basenum2 = 0; } with (math) { basenum3 = number(num1.tostring().replace(".", "")); basenum4 = number(num2.tostring().replace(".", "")); return (basenum3 / basenum4) * pow(10, basenum2 - basenum1); } };