版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、取整数
- parseInt(string, radix)
1.1 这个方法是一个将字符串转换为整数的方法,它有两个参数,第一个参数表示要转换的字符串,如果参数不是一个字符串,则将其转换为字符串。第二个参数是基数即进制,默认为10
1.2 由于这个函数需要先将参数转为字符串,再转整数,所以会带来一定的性能开销 - Math方法
2.1 Math.round是四舍五入
2.2 Math.ceil是向上取整
2.3 Math.floor是向下取整
2.4 ES2015之后,提供了原生的Math.trunc,相当于集成了Math.ceil 和 Math.floor,不需要先判断参数的正负
2.5 Math方法的比parseInt性能好 - tricky
3.1 利用位或“|”操作来取整
3.2 这个方法有个缺点,它不能处理超过32位的数值取整,而JavaScript有效整数的范围是53位,但是考虑js文件大小,那么a|0与其他方式比较,是最短的方式,所以如果要考虑压缩代码的大小,且明确知道数值范围不会超过32位整数的时候,可以考虑使用这个技巧
// 1
console.log(parseInt(3.75)); // 3
// 2
function trunc(num) {
if(num >= 0) return Math.floor(num);
return Math.ceil(num);
}
console.log(trunc(3.75)); // 3
console.log(trunc(-3.75)); // -3
// 2.4
console.log(Math.trunc(-3.75)); // -3
// 3
let num = 3.75;
console.log(num | 0); // 3
num = -num;
console.log(num | 0); // -3
二、取小数
- 先取整再相减
- 原数对1取模
// 1
function fract(num) {
return num - Math.trunc(num);
}
console.log(fract(3.75)); // 0.75
console.log(fract(-3.75)); // -0.75
// 2
console.log(3.75 % 1);