示例: accMul(1,2)
//两位小数 相乘
function accMul(arg1,arg2){
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))Number(s2.replace(".",""))/Math.pow(10,m)
}
//两位小数 相除
function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){} //–小数点后的长度
try{t2=arg2.toString().split(".")[1].length}catch(e){} //–小数点后的长度
with(Math){
r1=Number(arg1.toString().replace(".","")) //–去除小数点变整数
r2=Number(arg2.toString().replace(".","")) //–去除小数点变整数
return (r1/r2)pow(10,t2-t1); //—整数相除 在乘上10的平方 小数点的长度
}
}
//两位小数 相加
function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1m+arg2m)/m
}
//两位小数 相减
function accSub(arg1,arg2){
var r1,r2,m,n;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
//last modify by deeka
//动态控制精度长度
n=(r1>=r2)?r1:r2;
return ((arg1m-arg2m)/m).toFixed(n);
}
//保留两位小数
dealJineNum2(2.333,2,true)
function dealJineNum2(num , digits, isRound){
var digits = 2;
var isRound = true;
// 是否为正数
var isPositive = (+num >= 0);
num += '';
isRound = Boolean(isRound);
// 去掉正负号,统一按照正数来处理,最后再加上符号
num = num.replace(/^(?:-|\+)/gi, '');
// 小数点过大
/* istanbul ignore next */
if (digits > 20 || digits < 0) {
throw new RangeError('toFixed() digits argument must be between 0 and 20');
}
// 如果是简写如.11则整数位补0,变成0.11
/* istanbul ignore next */
if (/^\./gi.test(num)) {
num = '0' + num;
}
// 非数字
/* istanbul ignore next */
if (!/^\d+\.?\d*$/gi.test(num)) {
throw new Error('toFixed() num argument must be a valid num');
}
var numParts = num.split('.');
var result = '';
var floatPart = '';
// 在str后面加n个0
var _paddingZero = function (str, n) {
for (var i = 0; i < n; i++) {
str += '0';
}
return str;
};
// 在str后面加0,直至str的长度达到n
// 如果超过了n,则直接截取前n个字符串
var _paddingZeroTo = function (str, n) {
if (str.length >= n) {
return str.substr(0, n);
} else {
return _paddingZero(str, n - str.length);
}
};
// 直接就是整数
if (numParts.length < 2) {
result = numParts[0] + '.' + _paddingZero('', digits);
// 为浮点数
} else {
// 如果为截取
if (isRound === false) {
result = numParts[0] + '.' + _paddingZeroTo(numParts[1], digits);
// 如果为四舍五入
} else {
// 放大10的N次方倍
var enlarge = numParts[0] + _paddingZeroTo(numParts[1], digits) + '.' + numParts[1].substr(digits);
// 取整
enlarge = Math.round(enlarge) + '';
// 缩小10的N次方
while(enlarge.length <= digits){
enlarge = '0' + enlarge;
}
result = enlarge.substr(0, enlarge.length - digits) + '.' + enlarge.substr(enlarge.length - digits);
}
}
// 如果最后一位为.,则去除
result = result.replace(/\.$/gi, '').replace(/^\./gi, '0.');
// 加上符号位
result = isPositive ? result : '-' + result;
return result;
};