当我检查一些代码时,我发现有关位操作(|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/