鍍金池/ 問答/HTML/ js中一個小數與其他數字進行或運算結果為整數,求指教?

js中一個小數與其他數字進行或運算結果為整數,求指教?

javascript中一個小數與其他數字進行或運算,為什么結果是一個整數?

var a = 1.21;
a.toString(2) //1.00110101110000101000111101011100001010001111010111
var b = 0;//0
a|b//結果為1

按理說

   1.21    1.00110101110000101000111101011100001010001111010111
   0.00    0.00000000000000000000000000000000000000000000000000
   -------------------------------------------------------------------------
 |(或運算)  1.00110101110000101000111101011100001010001111010111
 
 結果不應該還是1.21嗎?為什么是1呢 ?求指教
回答
編輯回答
眼雜

事實上,JS的所有數據都是 double 型的,也就是64位浮點型,并按照IEEE754標準進行保存。

但是在做位運算的時候要對兩個數進行 toInt32 進行類型轉換(>>>toUint32), 然后按照32位整型的bits 進行位運算,運算結果也是按照Int32或是Uint32 進行解釋,再轉換成double

function toUint32(x) { return x>>>0;}
function toInt32(x) { return x>>0;}

toUint32(-1); // 4294967295 === 2^32 - 1
toInt32(-1); // -1
toInt32(1.21); // 1

具體可一參考 ES標準:http://www.ecma-international...

2017年12月3日 21:36
編輯回答
蟲児飛

位運算不支持小數,會向下取整

2017年3月31日 03:39