2011-08-18 37 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