【问题标题】:Javascript pipe in math to get Math.floor without using Math.floor [duplicate]数学中的 Javascript 管道在不使用 Math.floor 的情况下获取 Math.floor [重复]
【发布时间】:2017-01-07 10:53:39
【问题描述】:

我刚刚看到在一些 JavaScript 中使用了这个快捷方式。

(9 + 2) / 2|0; // results in 5 

当你进行正常的数学运算时,它会得到 5.5。

为什么上面的表达式会导致 Math.floor((9+2)/2)? 有人能指出那个管道正在做什么的方向吗,我不明白捷径。

【问题讨论】:

标签: javascript math


【解决方案1】:

单管 |是BitWise OR
位运算符只允许整数值,所以小数点后的值被丢弃。

Bitwise OR 运算符 |采用 2 位模式,并对每对对应的位执行 OR 操作。
下面的例子将解释它。

1010                            
1100       
----------bitwise or
1110       

【讨论】:

    【解决方案2】:
    1. 首先(9+2)/2的结果在JavaScript中是5.5
    2. 然后应用按位Or 操作。对于 JavaScript,按位运算不能直接在 64 位表示上起作用。而是将值转换为 32 位整数,即5.55,则5|0 的结果为5

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 2014-10-09
      • 2016-12-06
      • 2021-05-17
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多