js fixed 四舍五入问题,发现只有这个可靠些
来源:互联网 发布:给男朋友织围巾知乎 编辑:程序博客网 时间:2024/06/06 19:52
试过几个,经过改造,发现只有这个可靠些
Number.prototype.toFixed=function(len) { var tempNum = 0; var s,temp; var s1 = this + ""; var start = s1.indexOf("."); //截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1 if(s1.substr(start+len+1,1)>=5) tempNum=1; //计算10的len次方,把原数字扩大它要保留的小数位数的倍数 var temp = Math.pow(10,len); //求最接近this * temp的最小数字 //floor() 方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数 s = comm.accAdd( Math.floor( comm.accMul( this , temp)) , tempNum); return comm.accDiv(s,temp); }
其中comm.accAdd,comm.accMul,comm.accDiv
comm ={/* * 解决运算精度问题 * */accDiv : function(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); }} ,accMul : function(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)} ,accAdd : function(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 (arg1*m+arg2*m)/m} }
0 0
- js fixed 四舍五入问题,发现只有这个可靠些
- JS之四舍五入Fixed
- JS四舍五入问题处理
- js四舍五入
- js 四舍五入
- js四舍五入
- js 四舍五入
- js四舍五入
- js 四舍五入
- JS 四舍五入
- js 四舍五入
- JS 四舍五入
- js四舍五入
- js 四舍五入
- 看看这个Lock可不可靠
- SPL:我发现这个东西IsSaveTOMemery有问题
- JS中解决数值很小时四舍五入的精度问题
- JS中解决数值很小时四舍五入的精度问题
- 初识Spring Batch
- mysql中case when then 语句
- 前端开发中遇到的兼容性问题
- 怎样通过迅捷PDF编辑器来修改PDF文件
- zookeeper的功能以及工作原理
- js fixed 四舍五入问题,发现只有这个可靠些
- POJ2718 贪心算法(奇)+全排列剪枝(偶)
- Hybris培训团购课程开团啦!
- linux c之野指针
- IE和非IE的API事件兼容处理
- hdu5984
- 解决自定义Dialog无法弹出软键盘的问题
- 你们了解真正的黑客吗?
- RunLoop 总结:RunLoop的应用场景(一)