javascript - 解释如何在 JavaScript 中使用二元运算符将 float 强制转换为整数

标签 javascript numbers integer-division binary-operators

在 JavaScript 中,没有特殊的整数类型。实际上,所有数字都有一个 Number 类型,即 Double Precision Floating Point Number (IEEE 754)binary64

JavaScript 中数字运算的问题之一是标准中没有定义整数除运算符或函数。

更新:实际上,有一个 Math.trunc()函数,但它的运行速度比二进制解决方案慢约 2-5 倍,并且 Internet Explorer 不支持它。

可以使用一些二元运算符来实现所需的结果,例如:

  • (10/4) >> 0
  • ~~(10/4)
  • (10/4) | 0

上述所有操作都会生成数字 2,并且根据我的基准测试,在我的 x64 计算机 (Node.js v7.2.1) 上具有类似的性能>).

您能否解释一下这些二元运算到底是如何达到这个目的的?有首选吗?

最佳答案

这些操作并不是将 float 转换为 int 的直接方法。这些是二元运算,适用于整数。在这个过程中存在自动转换。所以这是一种滥用但更快的将 float 转换为 int 的方法。不过,由于这些操作在 javascript 中经常使用,因此使用它们并没有太大的坏处。不过,也可以使用 Math.floor() 或 Math.truncate() 来获得更好的可读性。

关于javascript - 解释如何在 JavaScript 中使用二元运算符将 float 强制转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634509/

相关文章:

excel - 巧妙地将数字格式化为十亿/百万/千

c# - 除整数类型 - 结果是否可预测?

java - 整数除法 : Why is the result of 1/3 == 0?

javascript - 无法水平堆叠矩形

javascript - 在 Angular.JS 中获取 watch 事件的 DOM 元素

javascript - .Net Core 和 Typescript : how to instruct TFS to ignore generated js and js. 映射文件

java - Java 数组中出现次数最多的数字

Java素数For循环失败

javascript - 顺风 CSS 导航栏

python - 负整数除法令人惊讶的结果