摘要:
在js脚本开发种,取整操作是我们经常遇见的操作之一,下文通过举例的方式将一一讨论这些取整方法,如下文所示
方式1:parseInt()
parseInt()方法的功能:将一个传入操作试着转换为一个整型,如果转换失败,则返回NaN
例:
parseInt("2019nov"), //2019
parseInt(""), //NaN
parseInt("0xB"), //11(十六进制)
parseInt(30.19), //30
parseInt(-30.19), //-30
parseInt("061"); //49(八进制数)
方式2:Math.trunc()
Math.trunc()数学函数会将参数中的小数部分删除掉,只返回整数
例:
Math.trunc(18.29) // 18
Math.trunc(55.94) // 55
Math.trunc(0.991) // 0
Math.trunc(-0.991) // -0
Math.trunc("-2.991") // -2
Math.trunc(NaN) // NaN
Math.trunc("maomao") //NaN
Math.trunc() // NaN
注意事项:
IE浏览器中没有这个方法,那么我们可以采用以下方法代替
Math.trunc = Math.trunc || function(x) {
if (isNaN(x)) {
return NaN;
}
if (x > 0) {
return Math.floor(x);
}
return Math.ceil(x);
};
方式3:~~number
使用双波浪线
~~的含义: 双按位非,此方法可以代替Math.trunc对数据取整
1、~~number
console.log(~~88.99) // 88
console.log(~~2.8888) // 2
console.log(~~8) // 8
console.log(~~[]) // 0
console.log(~~NaN) // 0
console.log(~~null) // 0
双波浪线应用注意事项:
1.取整的数据范围为: ±2^31-1
2.当转换失败时也会返回0
方式4:number|0
将数值和0(按位或)
console.log(80.92|0); // 80
console.log((-80.25)|0); // -80
方式5:number^0
^ (按位异或)
console.log(80.55^0); // 80
console.log((-80.55)^0); // -80
方式6: number<<0
<< (左移) 操作符会将第一个操作数向左移动指定的位数。向左被移出的位被丢弃,右侧用 0 补充。
console.log(80.25 << 0); // -80
console.log((-80.25) <<0); //-80
按位计算取整注意事项:
1.取整的数据范围为: ±2^31-1
2.当转换失败时也会返回0
方式7: 四舍五入 Math.round(number)
Math.round() 将数值四舍五入为最接近的整数。
console.log(Math.round(70.1)); // 70
console.log(Math.round(70.5)); // 71
console.log(Math.round(70.9)); // 71
console.log(Math.round(-70.1)); // -70
console.log(Math.round(-70.5)); // -70 注意这里是-70而不是-71
console.log(Math.round(-70.9)); // -71
方式8: 向下取整 Math.floor(number)
Math.floor()法取向下最近整数。
console.log(Math.floor(90.2)); // 90
console.log(Math.floor(90.5)); // 90
console.log(Math.floor(90.9)); // 90
console.log(Math.floor(-90.1)); // -91
console.log(Math.floor(-90.5)); // -91
console.log(Math.floor(-90.9)); // -91
方式9: Math.ceil(number)向上取整(向上取最接近的整数)函数
console.log(Math.ceil(80.1)); // 81
console.log(Math.ceil(80.5)); // 81
console.log(Math.ceil(80.9)); // 81
console.log(Math.ceil(-80.1)); // -80
console.log(Math.ceil(-80.5)); // -80
console.log(Math.ceil(-80.9)); // -80