JS四舍五入double型数字并动态截取小数位数

第一种:

var decimalNumber = function (value,bit) {

var tmp = "";

       //数字转为字符串

       var str = value.toString();

       //获取小数点位置

       var point = str.indexOf('.');

       if(point==-1) {

        return value;

       }

       //n的长度大于保留位数长度

       if (str.length > point + bit) {

           //保留小数后一位是否大于4,大于4进位

           if (parseInt(str.substr(point + bit + 1, 1)) > 4) {

            var bin = (parseInt(str.substr(point+1, bit)) + 1);

            if(bin<Math.pow(10, bit)){

            tmp += bin;

            var len = tmp.length;

            if(len < bit){

            tmp = "";

            for(var i=0; i<bit-len;i++){

            tmp+="0";

            }

            tmp += bin;

            }

            //return str.substring(0, point) + "." + tmp;

            str = str.substring(0, point) + "." + tmp;

            } else {

            //return parseInt(str.substring(0, point))+1+".0";

            str = parseInt(str.substring(0, point))+1+".0";

            }

           } else {

               //return str.substring(0, point) + str.substr(point, point+bit);

            str = str.substring(0, point) + str.substr(point, bit+1);

           }

       }

       return str;

   };

第二种:

    var decimalNumber = function(srcStr,nAfterDot){

   var srcStr,nAfterDot;

   var resultStr,nTen;

   srcStr = ""+srcStr+"";

   strLen = srcStr.length;

   dotPos = srcStr.indexOf(".",0);

   if (dotPos == -1){

     resultStr = srcStr+".";

     for (i=0;i<nAfterDot;i++){

       resultStr = resultStr+"0";

     }

     return resultStr;

   }

   else{

     if ((strLen - dotPos - 1) >= nAfterDot){

       nAfter = dotPos + nAfterDot + 1;

       nTen =1;

       for(j=0;j<nAfterDot;j++){

         nTen = nTen*10;

       }

       resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;

       return resultStr;

     }

     else{

       resultStr = srcStr;

       for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){

         resultStr = resultStr+"0";

       }

       return resultStr;

     }

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值