简述JS中的一些取整方法
整合了JS一些取整方法,对一些常规的方法列举出了它们的用途和区别,还有一些非正常的方法。
Math.floor:
Math.floor相比大家都不陌生,它的作用是向下取整,我想大家用它比较多的地方大概是在生成随机值时使用,比如下面的场景。
const value = Math.floor(Math.random() * 10);parseInt:
parseInt也是常用的取整方法之一,同时它也可以将字符串解析为整数,它的作用原理是只提取整数,舍弃掉小数部分,这里需要注意是,它是向0方向取整,在正数的情况下它和Math.floor没什么差异,但在负数情况下,得到的结果就会不一样,Math.floor在负数情况下,还是会向下取整,而parseInt由于是向0取整,结果会是向上靠近,下面是一个示例。
Math.floor(1.7) // 1
parseInt(1.7) // 1
Math.floor(-3.7) // -4
parseInt(-3.7) // -3
Math.ceil:
Math.ceil为向上取整,其它的也没什么好说的了。
Math.round:
Math.round为四舍五入,它的规则是小数部分大于0.5就进位,否者就舍去。
Math.trunc:
Math.trunc为截断,去掉数字的小数部分返回整数,不会进行四舍五入,直接截断。
额外扩展:
// 双波浪号,原理Math.trunc一样
console.log(~~3.7) // 3.7
// 位运算,原理是利用了js中数字的二进制表示。
console.log(2.7 | 0) // 2
console.log(-2.7 | 0) // -2
// number + parseFlot + toFixed,原理是将数字转字符串然后利用toFied截取,在用number转回去。
console.log(Number((parseFloat(-3.7).toFixed(0)))) // -4