共计 1326 个字符,预计需要花费 4 分钟才能阅读完成。
转自 https://juejin.cn/post/690188…
1. parseInt()
// js 内置函数,留神承受参数是 string,所以调用该办法时存在类型转换
parseInt("1.5555") // => 1
复制代码
2. Number.toFixed(0)
// 留神 toFixed 返回的字符串,若想取得整数还须要做类型转换
1.5555.toFixed(0) // => "1"
复制代码
3. Math.ceil()
// 向上取整
Math.ceil(1.5555) // => 2
复制代码
4. Math.floor()
// 向下取整
Math.floor(1.5555) // => 1
复制代码
5. Math.round()
// 四舍五入取整
Math.round(1.5555) // => 2
Math.round(1.4999) // => 1
复制代码
6. Math.trunc()
// 舍弃小数取整
Math.trunc(1.5555) // => 1
复制代码
7. 双按位非取整
// 利用位运算取整,仅反对 32 位有符号整型数,小数位会舍弃,下同
~~1.5555 // => 1
复制代码
8. 按位运或取整
1.5555 | 0 // => 1
复制代码
9. 按位异或取整
1.5555^0 // => 1
复制代码
10. 左移 0 位取整
1.5555<<0 // => 1
复制代码
上述 10 种取整办法中,最罕用的预计是前 2 种 [我裂开了~~],不过从性能角度看,位运算取整
和Math 函数
性能最佳,内置办法 parseInt
次之,toFixed
性能最劣。
以下是 Benchmark 测试后果,证实了这点,toFixed
性能是最差的:
darwin x64
整数取整 #getNum1#parseInt x 210,252,532 ops/sec ±2.74% (85 runs sampled)
整数取整 #getNum2#toFixed x 3,281,188 ops/sec ±1.54% (86 runs sampled)
整数取整 #getNum3#Math.ceil x 778,272,700 ops/sec ±3.97% (87 runs sampled)
整数取整 #getNum4#Math.floor x 816,990,140 ops/sec ±0.54% (88 runs sampled)
整数取整 #getNum5#Math.round x 814,868,414 ops/sec ±0.65% (88 runs sampled)
整数取整 #getNum6#Math.trunc x 821,032,596 ops/sec ±0.54% (91 runs sampled)
整数取整 #getNum7#~~num x 813,589,741 ops/sec ±0.67% (90 runs sampled)
整数取整 #getNum8#num | 0 x 815,070,107 ops/sec ±0.65% (90 runs sampled)
整数取整 #getNum9#num ^ 0 x 812,635,464 ops/sec ±0.74% (90 runs sampled)
整数取整 #getNum10#num << 0 x 819,230,753 ops/sec ±0.49% (91 runs sampled)
Fastest is 整数取整 #getNum6#Math.trunc, 整数取整#getNum10#num << 0
复制代码
正文完
发表至: javascript
2020-12-03