参考至: 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,数字类型