在 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/