我的一位同事偶然发现了一种使用按位或的方法来设置浮点数:
var a = 13.6 | 0; //a == 13
我们在谈论它,想知道一些事情.
- 它是如何工作的?我们的理论是,使用这样的运算符将数字转换为整数,从而删除小数部分
- 它比
Math.floor
有什么优势吗?也许会快一点?(双关语并非有意) - 它有什么缺点吗?也许它在某些情况下不起作用?清晰是显而易见的,因为我们必须弄清楚,好吧,我正在写这个问题.
谢谢.
我的一位同事偶然发现了一种使用按位或的方法来设置浮点数:
var a = 13.6 | 0; //a == 13
我们在谈论它,想知道一些事情.
Math.floor
有什么优势吗?也许会快一点?(双关语并非有意)谢谢.
它怎麽工作?我们的理论是,使用这样的运算符会将 数字转换为整数,从而删除小数部分
除无符号右移位>>>
外,所有按位运算都处理有符号的32位整数.因此,使用按位运算会将浮点数转换为整数.
它比做数学有什么优势吗.地板也许有点
http://jsperf.com/or-vs-floor/2看起来稍微快一点
它有什么缺点吗?也许它在某些情况下不起作用?
Math.floor(NaN) === NaN
,而(NaN | 0) === 0