1:假设:有一个小数11.4449,若要求保留小数点后3位,得到11.444这样的结果。
1.1:Number中常用的方法为toFixed():
1.2:Math中常用的舍入方法:
1.3:运行结果
<script>
var i = 11.4449;
console.log(i.toFixed(3));//11.445
console.log(Math.floor(i));//11
console.log(Math.ceil(i));//12
</script>
由此可见,上述方法均无效。
1.4:采用字符串来操作
先检索"."出现的位置:
var index = i.toString().indexOf(".");
console.log(index);//2
之后使用下面的方法进行拼接:
var part1 = i.toString().substr(0,index);
console.log(part1);//11
var part2 = i.toString().substring(index,3+(1+index));
console.log(part2);//.444
之后将part1和part2合并即得到11.444!
//封装的方法
function trunc(i,index){
var result = i.toString().substr(0,index)
+i.toString().substring(index,index+(1+index));
return result;
}
console.log(trunc(11.4444,2));
1.5:采用Math的方法(优先选择)
回顾一下,Math向下取整的 floor。若保留小数点后3位,可以先将数乘以10^3,之后调用floor,再除以1000
var j = 11.4449;
var j1 = j*1000;//11444.9
var j2 = Math.floor(j1);//11444
var j3 = j2/1000;//11.444
//同样封装到方法内
function trunc2(i,index){
var p = Math.pow(10,index);
var result = Math.floor(i*p)/p;
return result;
}
console.log(trunc2(11.4444,2));