2011-08-18 12 views
7

Cuando ejecuto el siguiente código de Visual Basic:¿El operador de energía en Java?

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

(Suponiendo a es un doble cuyo valor es 15,0)
El resultado me pasa por b es de aproximadamente 32.275.

Pero cuando corro el siguiente código de Java, que se supone que debe hacer lo mismo que el anterior:

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

De nuevo con a siendo 15, aparece un gran resultado diferente: aproximadamente 17.

Ambos están resolviendo esta ecuación:

enter image description here

¿Por qué es esto así? Para lo que estoy trabajando, el resultado de Visual Basic arroja lo que estoy buscando.

Respuesta

24

^ es XOR operator en java. Use Math.pow(2,8) que es 2^8 en Visual Basic.

+1

Además de la cosa XOR, en Java a es int o doble? Porque si es int, entonces a/x también es int. – pablosaraiva

+0

'a' es un valor doble en este caso. – Kenan

+0

¡Gracias! Esta solución funcionó. Me preguntaba por qué 'Math.pow()' incluso existía si podía usar '^' (que ahora sé que no puedo). – Kenan