内置
<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; } })