|
|
/**
|
|
|
* @name 计算常用JS帮助类
|
|
|
* @remark 2015-03-11 改为模块化写法
|
|
|
*/
|
|
|
var calcHelper = (function(){
|
|
|
var _fixNum = 2;
|
|
|
|
|
|
/**
|
|
|
* 设置精度
|
|
|
* @param num 保留小数位
|
|
|
* @remark 因JS自身问题,返回的数字跟保留的小数位不符,如:1.00,实际返回1
|
|
|
*/
|
|
|
var SetFixed = function (num){
|
|
|
if(isNaN(parseInt(num))){
|
|
|
_fixNum = 2;
|
|
|
} else {
|
|
|
_fixNum = parseInt(num);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 加法运算
|
|
|
* @param num1 数字1
|
|
|
* @param num2 数字2
|
|
|
* @return (num1 + num2)
|
|
|
*/
|
|
|
var Addition = function (num1, num2) {
|
|
|
var n1, n2;
|
|
|
try {
|
|
|
n1 = num1.toString().split(".")[1].length //获取数1小数部位的长度
|
|
|
} catch (e) { n1 = 0; }
|
|
|
try {
|
|
|
n2 = num2.toString().split(".")[1].length //获取数2小数部位的长度
|
|
|
} catch (e) { n2 = 0; }
|
|
|
//计算最大长度,得到10的N次方
|
|
|
var pow = Math.pow(10, Math.max(n1, n2));
|
|
|
//将两个因数升级为10的N次方形式进行相加,最后再还原为10的倒N次方,得出的就是无损数据
|
|
|
var result = (Multiplication(num1, pow) + Multiplication(num2, pow)) / pow;
|
|
|
return parseFloat(result.toFixed(_fixNum));
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 减法运算
|
|
|
* @param num1 数字1
|
|
|
* @param num2 数字2
|
|
|
* @return (num1 - num2)
|
|
|
*/
|
|
|
var Subtraction = function (num1, num2) {
|
|
|
return this.Addition(num1, -num2);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 乘法运算
|
|
|
* @param num1 数字1
|
|
|
* @param num2 数字2
|
|
|
* @return (num1 * num2)
|
|
|
*/
|
|
|
var Multiplication = function (num1, num2) {
|
|
|
var square = 0; //次方数
|
|
|
var n1 = num1.toString();
|
|
|
var n2 = num2.toString();
|
|
|
try {
|
|
|
square += n1.split(".")[1].length;
|
|
|
} catch (ex) { }
|
|
|
try {
|
|
|
square += n2.split(".")[1].length;
|
|
|
} catch (ex) { }
|
|
|
var result = Number(n1.replace(".", "")) * Number(n2.replace(".", "")) / Math.pow(10, square);
|
|
|
return parseFloat(result.toFixed(_fixNum));
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 除法运算
|
|
|
* @param num1 数字1
|
|
|
* @param num2 数字2
|
|
|
* @return (num1 / num2)
|
|
|
*/
|
|
|
var Division = function (num1, num2) {
|
|
|
return this.Multiplication(num1, 1 / num2);
|
|
|
};
|
|
|
|
|
|
return {
|
|
|
SetFixed : SetFixed,
|
|
|
Addition : Addition,
|
|
|
Subtraction : Subtraction,
|
|
|
Multiplication : Multiplication,
|
|
|
Division : Division
|
|
|
};
|
|
|
})();
|
|
|
|