今天在用JavaScript实现大数相加的时候,发现网上的解法当中有使用~~
运算符,之前没有见过。在网上一查,说是Math.floor()
的更好的一种表示方法,运行速度更快。但是将大数相加的代码中的~~
换成Math.floor()
发觉得不到正确的答案,所以想来分析一下异同。
~
和~~
~
运算符
用于将整数变为-(N+1)
。
例如:
~2 === -3; //true
~1 === -2; //true
~0 === -1; //true
~-1 === 0; //true
~~
运算符
~~
是Math.floor()
的一个替代,相同的操作但是更快。可以使用它将任何浮点数转换为整数(下取整)。
例如:
~~2 === Math.floor(2); //true, 2
~~2.4 === Math.floor(2); //true, 2
~~3.9 === Math.floor(3); //true, 3
~~
和Math.floor()
在性能上的不同:
# | Browser | Math.floor() |
---|