2011-08-18 42 views
7

当我运行下面的Visual Basic代码:Java中的电源运算符?

Dim b As Double 
b = (2^16 - 1) * Math.Sqrt(Math.Sqrt((a/(2^8 - 1)))) 

(假设a是一个双,其值为15.0)
结果我得到b约为32,275。

但是当我运行下面的Java代码,这是应该做的事情与上面相同:与a为15

double b; 
b = (2^16 - 1) * Math.sqrt(Math.sqrt((a/(2^8 - 1)))); 

再次,我得到一个非常不同的结果:约17

两者都是解决这个等式:

enter image description here

为什么会这样呢?对于我正在处理的内容,我期待的Visual Basic收益率结果。

回答

24

^ is XOR operator in java。在Visual Basic中使用Math.pow(2,8)2^8

+1

除了异或的事情,在Java中是一个int还是double?因为如果它的int,那么a/x也是int。 – pablosaraiva

+0

'a'在这种情况下是双重值。 – Kenan

+0

谢谢!此解决方案工作。我想知道为什么'Math.pow()'甚至存在,如果我只能使用'^'(现在我知道我不能)。 – Kenan