Mozilla JavaScript Guide有关于按位OR运算符的说法:
"按位OR:在每个位的位置返回一个零,两个操作数的相应位都为零。"
但是,当操作数b为1时,下面示例中的按位运算符OR将向上舍入a
。这是我无法解决的问题。此外,看到a
返回非舍入数字,我也不清楚按位运算符如何将其截断为两位数。
var a = Math.random()*100;
console.log(a);
console.log(a | 1);
非常欢迎富有洞察力的解释。
答案 0 :(得分:2)
这里的隐藏因素是按位运算符在应用之前将数字转换为整数。这就是数字四舍五入的原因。演员截断任何小数部分。
按位OR本身然后简单地将第一位设置为1.因此,可能会或者可能不会将截断的数字增加1,具体取决于它是奇数还是偶数后截断。
因此,在所有情况下都没有将其四舍五入 - 仅占50%的时间。