為什麼JS中一個浮點數位或0會去掉小數部分?

在JS中,

1.222 | 0 === 1;

-2.33 | 0 === -2;

這是什麼原理?


「|」運算是二進位或,操作數會先轉為int32。


@賀師俊 一語道破。

題主對於JS的數字類型了解還不夠深的話,可以讀讀看我寫的一篇相關的博文:為什麼不要在 JavaScript 中使用位操作符?


位運算都會轉整數。其實沒原理可言,就是規定先轉整數。因為js的number是浮點數,不轉整數怎麼進行位運算。你看java的浮點數是不能進行位運算的。再一點就是這樣效率其實不高,不如用Math.floor,更可讀


推薦閱讀:

怎樣精確區分這些名詞:庫、插件、組件、控制項、擴展?
sass、scss、less、compass、bootstrap學習的順序是什麼?
沒有Fork而是直接拷貝代碼到自己的倉庫並進行修改增加新的功能,是否算抄襲?
Sublime Text 3中如何一次性修改變數及其引用?
在瀏覽器端,安全控制項跟 JS 加密的密碼有何區別?

TAG:JavaScript | 前端工程師 | IEEE754 |