2011-08-18 29 views
7

Quando eseguo il seguente codice Visual Basic:L'operatore di alimentazione in Java?

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

(Supponendo a è un doppio il cui valore è 15,0)
Il risultato che ottengo per b è di circa 32.275.

Ma quando ho eseguito il seguente codice Java, che dovrebbe fare la stessa cosa come sopra:

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

Sempre con a essendo 15, ho un gran risultato diverso: circa 17.

entrambi stanno risolvendo questa equazione:

enter image description here

Perché è così? Per ciò su cui sto lavorando, Visual Basic restituisce il risultato che sto cercando.

risposta

24

^ è XOR operator in java. Utilizzare Math.pow(2,8) che è 2^8 in Visual Basic.

+1

Oltre alla cosa XOR, in Java a è int o doppio? Perché se è int, allora anche a/x è int. – pablosaraiva

+0

'a' è un doppio valore in questo caso. – Kenan

+0

Grazie! Questa soluzione ha funzionato. Mi chiedevo perché 'Math.pow()' esistesse persino se potessi usare '^' (che ora so che non posso). – Kenan

Problemi correlati