【发布时间】:2014-03-23 01:03:18
【问题描述】:
这是来自 Google Chrome Javascript 控制台的输出。
这里是 DrJava Java 控制台的输出。
我的 Javascript 代码是
(baseCPUCyclesPerIteration - CPUCyclesTotalRoundoff) | 0
如果两个变量都是整数但显然它们在 javascript 中是双精度的,则似乎在 Java 中编译得很好。虽然
typeof baseCPUCyclesPerIteration 透露 "number"
结果很明显它是一个双重数据类型。我不明白为什么按位 OR 0 在 Javascript 中适用于双精度,但不适用于 Java 双精度。
似乎| 0 的目的只是修剪双数据类型中的小数点。我猜在Java中相当于(int)或(long)演员这是正确的吗?还是按位 | 0 做的不仅仅是修剪 javascript 中的小数点?
编辑:
ya | 0 不只是在 javascript 中修剪只是运行了这个。 8899811111.111113453456754645 | 0 回来了 309876519.
(虽然我通过了双重限制,lol 仍然尝试在 javascript 中计算它,我猜这是发生溢出的地方)。
【问题讨论】:
-
他们处理类型的方式不同(你的问题似乎是合理的,只是说:p,比较它们很混乱)
-
因为在Java中,位运算符只能应用于原始整数类型...这是由语言定义的。
-
在 Java 中是
| 0与(int)或(long)相同吗? -
不知道,但最好使用
parseInt()(在 JavaScript 中)恕我直言。否则,是的,您将使用 Java 进行强制转换以删除小数。请注意,您希望long处理所有double,因为double中可能的整数值大于int支持的值 -
ya
| 0不只是在javascript中修剪只是运行了这个。8899811111.111113453456754645 | 0回来了309876519(虽然我通过了双重限制,但我仍然尝试在 javascript 中计算它,我猜这是发生溢出的地方)。
标签: java javascript numbers double bitwise-or