/**
* 计算
*/
var count={
jisuan: function () {
var th = this;
var type = arguments[0];
var arg = arguments;
var result = 0;
switch (type) {
case '+':
result = th.xiangjia(arg);
break;
case '-':
result = th.xiangjian(arg);
break;
case '*':
result = th.chengfa(arg);
break;
case '/':
result = th.chufa(arg);
break;
}
return result
},
quzheng: function (param) {
var args = param + '';
var index = args.indexOf('.');
var doubleLen = 0;
if (index > 0) {
doubleLen = args
.substring(index + 1)
.length
param = param * 1 * Math.pow(10, doubleLen);
}
var p = [0, 0];
var i = (param + '').indexOf('.');
param = Math.round(param); //取最接近整数
p.splice(0, 1, param);
p.splice(1, 1, doubleLen);
return p
},
//加法,减法,除法,计算比较麻烦,需要取到小数位数最大的值
xiangjia: function (args) {
var th = this;
var con = 0,
len = [],
i,
argLen = args.length,
arg;
for (i = 0; i < argLen; i++) {
if (i > 0) {
len[i - 1] = th.quzheng(args[i])[1];
}
}
var maxLen = Math
.max
.apply(null, len);
for (i = 0; i < argLen; i++) {
if (i > 0) {
con += th.quzheng(args[i])[0] * 1 * Math.pow(10, (maxLen - len[i - 1]));
}
}
return con / Math.pow(10, maxLen)
},
// 减法
xiangjian: function (args) {
var th = this,
con = 0,
len = [],
i,
argLen = args.length,
arg;
for (i = 0; i < argLen; i++) {
if (i > 0) {
len[i - 1] = th.quzheng(args[i])[1];
}
}
var maxLen = Math
.max
.apply(null, len);
con = th.quzheng(args[1])[0] * 1 * Math.pow(10, (maxLen - len[0]));
for (i = 0; i < argLen; i++) {
if (i > 1) {
con = con * 1 - (th.quzheng(args[i])[0] * 1 * Math.pow(10, (maxLen - len[i - 1]))) * 1;
}
}
return con / Math.pow(10, maxLen)
},
//乘法需要求到所有取正的倍数
chengfa: function (args) {
var th = this,
con = 1,
len = 0,
i,
argLen = args.length,
arg;
for (i = 0; i < argLen; i++) {
if (i > 0) {
arg = th.quzheng(args[i])
con = arg[0] * 1 * con;
len += arg[1];
}
}
return con / Math.pow(10, len)
},
//除法需要求最长小数位数
chufa: function (args) {
var th = this,
con = 1,
len = [],
i,
argLen = args.length,
arg;
for (i = 0; i < argLen; i++) {
if (i > 0) {
len[i - 1] = th.quzheng(args[i])[1];
}
}
var maxLen = Math
.max
.apply(null, len);
con = th.quzheng(args[1])[0] * 1 * Math.pow(10, (maxLen - len[0]));
for (i = 0; i < argLen; i++) {
if (i > 1) {
con = con * 1 / (th.quzheng(args[i])[0] * 1 * Math.pow(10, (maxLen - len[i - 1]))) * 1;
}
}
return con
},
}调用方式 count.jisuan('+',0.1,0.2)
|