加法:
- /**
- * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。
- *
- * @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加数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 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);
- }
- };