四舍五入

内置

        <script>
            function sswr(j){
                var temp=Math.round(j);//四舍五入取整,不保留小数位
                return temp;
                //丢弃小数部分,保留整数部分:parseInt(5/2)
                //向上取整,有小数就整数部分加1:Math.ceil(5/2)
                //向下取整:Math.floor(5/2)
            }
            
            var i=3.6;
            var newi=sswr(i);
            console.log(newi)//4
        </script>

方法1

        <script>
            function sswr(j){
                var y=(j*10)%10;//余数
                var temp=parseInt(j);//取整
                if(y>=5){
                    temp++
                }
                return temp;
            }
            
            var i=3.6;
            var newi=sswr(i);
            console.log(newi)//4
        </script>

方法2

        <script>//Number对象方法:把数字转换为字符串,结果的小数点后有指定位数的四舍五入数字。
            //需要注意的是:n不能超过20、如果截取的位数大于原来的则0补、如果截取位数的最后一位是0那么则还是0并不会四舍五入
            var i=3.264;
            var newi=i.toFixed(1);
            console.log(newi)//3.3
        </script>

方法3.完美版

       <script>
            //保留2位小数[如果需要保留小数位,那么这个是最完美的]
            Number.prototype.toFixed2=function(n){
                //如果截取位数的最后一位是0的话,那么将不会四舍五入,还是原来的0,以下将返回0.10
                //return j.toFixed(2);
                
                //为避免此类悲剧发生,我建议这么做
                var that=this;
                var w=Math.pow(10,n);//表示10的n次幂
                //0.105*100=10.5, 10.5四舍五入为11, 11/100=0.11
                var temp=Math.round(that*w)/w;
                return temp;
                
            };
            
            var i=0.105;
            var newi=i.toFixed2(2);
            console.log(newi)//0.11
        </script>

保留小数位,但是不四舍五入

       <script>
            function Subs(ws,num){
                var temp=String(num);
                var zs=temp.split(".")[0];
                var xs=temp.split(".")[1];
                if(xs.length>ws){
                    var newxs=xs.substring(0,ws);
                    temp=zs+'.'+newxs+'...'
                }
                console.log(temp)
            }
            
            var i=12.3456788;
            Subs(2,i)//12.34...
        </script>

四舍五入--不会补0

      <script>
            Number.prototype.sswr=function(n){
                var that=this;
                var temp=that;
                var thatStr=String(that);
                var point=thatStr.indexOf('.');
                if(point!=-1){
                    var ws=thatStr.length-point-1;//小数位数
                    if(ws-n>0){
                        var w=Math.pow(10,n);//表示10的n次幂
                        //0.105*100=10.5, 10.5四舍五入为11, 11/100=0.11
                        temp=Math.round(temp*w)/w;
                    }
                }
                return temp;
            }
            var a=12.34005.sswr(8);
            var b=12.34005.sswr(3);
            console.log(a);//12.34005
            console.log(b);//12.34
        </script>

四舍五入--不会补0(angular过滤器版)

  .filter('number2',function(){
        return function(that,n){
            var temp=that;
            var thatStr=String(that);
            var point=thatStr.indexOf('.');
            if(point!=-1){
                var ws=thatStr.length-point-1;//小数位数
                if(ws-n>0){
                    var w=Math.pow(10,n);//表示10的n次幂
                    //0.105*100=10.5, 10.5四舍五入为11, 11/100=0.11
                    temp=Math.round(temp*w)/w;
                }
            }
            return temp;
        }
    })

 

原文地址:https://www.cnblogs.com/dshvv/p/7680676.html