参考至: oschina.net杨意社的博客 /** * 数据处理-准确(准确程度视位数而定)的加减法 * @param arrNum 加减数的数组 * @param isNum(选填)返回结果是否为数字,默认返回字符串 * @param digits (选填)精
/**
* 数据处理-准确(准确程度视位数而定)的加减法
* @param arrNum 加减数的数组
* @param isNum (选填)返回结果是否为数字,默认返回字符串
* @param digits (选填)精确位数,默认为2位
* @returns
*/
function sum_pack(arrNum,isNum,digits){
digits=digits||2;
isNum=isNum||false;
var multi=Math.pow(10,digits);
var intSum=0;
for(var i in arrNum){
var num=arrNum[i];
if(num!=''&&!isNaN(num)){
var fltNum=parseFloat(num);
//此处也可考虑将四舍五入放在加减后进行,视业务需求而定
var intNum=Math.round(fltNum*multi);
intSum+=intNum;
}else if(isNaN(num)){
console.log('can not parse : '+num);
}
}
var fltSum=intSum/multi;
if(isNum){
return fltSum;
}else{
return fltSum.toFixed(digits);
}
}
gistfile1.txt
var s='5.678'; var arrNum=[1,'2.3',-4,-s];//-s在js中会自动取相反数,负数亦然 var sum1=sum_pack(arrNum); var sum2=sum_pack(arrNum,true); var sum3=sum_pack(arrNum,true,3); console.log(sum1);//print:-6.4,字符串类型 console.log(sum2);//print:-6.4,数字类型 console.log(sum3);//print:-6.38,数字类型
