这是来自 Google Chrome Javascript 控制台的输出。
这是 DrJava Java 控制台的输出。
我的 Javascript 代码是
(baseCPUCyclesPerIteration - CPUCyclesTotalRoundoff) | 0
如果两个变量都是整数,则似乎在 Java 中编译得很好,但显然它们在 javascript 中是双精度的。虽然
typeof baseCPUCyclesPerIteration
揭示"number"
结果很明显它是一个双重数据类型。我不明白为什么按位OR 0
适用于 Javascript 中的双精度,但不适用于 Java 双精度。
似乎的目的| 0
只是修剪双数据类型中的小数点。我猜Java中的等价物将是(int)
或(long)
强制转换这是正确的吗?或者按位| 0
做的不仅仅是修剪javascript中的小数点?
编辑:你| 0
不只是在javascript中修剪只是运行了这个。8899811111.111113453456754645 | 0
回来了309876519
。
(虽然我通过了双重限制,但 lol 仍然尝试在 javascript 中计算它,我猜这是发生溢出的地方)。