JavaScript中Number没有直接截取小区位的方法?

1:假设:有一个小数11.4449,若要求保留小数点后3位,得到11.444这样的结果。
  1.1:Number中常用的方法为toFixed():

toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。

1.2:Math中常用的舍入方法:
ceil(x) 对数进行上舍入。
floor(x) 对数进行下舍入。
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:采用字符串来操作

先检索"."出现的位置:

indexOf() 检索字符串。
var index = i.toString().indexOf(".");
console.log(index);//2
之后使用下面的方法进行拼接:
substr() 从起始索引号提取字符串中指定数目的字符。
substring() 提取字符串中两个指定的索引号之间的字符。
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));



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值