ビット演算子で実験したところ、to my questionとhereです。私のテストスイートの追加情報:2つの整数に同じ符号が付いていないか確認してください
チェック結果:
function equal(n1,n2){
var bool = (n1^n2 >= 0)?true:false;
document.write("<div>"+bool+" ("+(n1^n2)+")</div>");
}
equal(-5,-2); //true
equal(-4,-20); //true
equal(15,-2); //false
equal(25,3); //true
equal(-1,1); //false
equal(1,1); //true
equal(-1,-1); //true
// edgecases
equal(0,0);
equal(-0,0);
equal(+0,0);
equal(-0,+0);
equal(+0,-0);
結果:
true (5)
true (16)
true (-15)
true (26)
true (-2)
false (0)
true (0)
true (0)
true (0)
true (0)
true (0)
true (0)
マイfiddle is hereに従って。
結果は私を非常に混乱させます。私はあまりにも愚かですか?ここで何が起こったのですか?
あなたは愚かではありません.Javascriptは、ゼロに近づいている数で本当に面白い動作をしています。これを読んで:http://www.2ality.com/2012/03/signedzero.html –