javascript - 想知道与 0 使用 OR 位运算的原因

标签 javascript bitwise-operators bitwise-or

当我检查一些代码时,我发现有关位操作(|0)的计算未命中。

首先,我想知道为什么在计算(a*b)|0这样的两个数字后使用'|0'有什么特殊原因

其次,在下面的例子中,我期望得到的结果是220050,但结果是220049。你们知道为什么我得到这个结果吗?

importPackage(java.io); importPackage(java.lang);

var a = 164.700;
var b = 1500;

var result = (a*b)|0;


System.out.println(result);

最佳答案

|0 通过向零舍入将值转换为 32 位整数。乘法的结果略小于整数,因为数字在内部以二进制形式存储,并且您无法用二进制精确地表示大多数小数,原因与 1/3 不能用有限的十进制精确地写成相同的原因小数点后的位数。 164.7 的结果为 164.69999999999998863131622783839702606201171875。

关于javascript - 想知道与 0 使用 OR 位运算的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37850832/

相关文章:

Javascript FormData() 文件上传到 S3 在 Chrome 中有效,但在 Safari 中无效

javascript - 像 Rails 一样,在 Node.js (node-orm) 中链接模型关系

C 按位或返回 "f"

c++ - C++ 中 64 位整数的按位 (Bitshift) 运算

javascript - 获取具有相同类的其他元素中的元素的索引

javascript - 如何使用 Javascript/jquery 设置浏览器的时区

javascript - 将按位运算符应用于数组的值

bitwise-operators - 在谈论按位运算符时,符号 "0xf00f"是什么意思?

你能控制按位右移将填充 C 的内容吗?