使用按位或0将数字取底
我的一位同事偶然发现了一种使用按位或来对浮点数求和的方法:
var a = 13.6 | 0; //a == 13
我们正在谈论它,并且想知道一些事情。
- 它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而除去小数部分
- 这样做有什么好处
Math.floor
吗?也许更快一点?(双关语无意) - 有什么缺点吗?也许在某些情况下不起作用?清晰度很明显,因为我们必须弄清楚这一点,我在写这个问题。
谢谢。
回答:
它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而除去小数部分
除无符号右移,以外的所有按位运算都>>>
对有符号的32位整数起作用。因此,使用按位运算会将浮点数转换为整数。
与做Math.floor相比有什么优势吗?也许更快一点?(双关语无意)
有什么缺点吗?也许在某些情况下不起作用?清晰度很明显,因为我们必须弄清楚这一点,我在写这个问题。
- 不会通过jsLint。
- 仅32位有符号整数
- 比较行为:
Math.floor(NaN) === NaN
,而(NaN | 0) === 0
以上是 使用按位或0将数字取底 的全部内容, 来源链接: utcz.com/qa/416399.html