2011-08-18 31 views
7

Khi tôi chạy mã Visual Basic sau:Nhà điều hành công suất trong Java?

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

(Giả sử a là một đôi có giá trị là 15,0)
Kết quả tôi nhận được cho b là khoảng 32.275.

Nhưng khi tôi chạy đoạn mã sau Java, đó là nghĩa vụ phải làm tương tự như trên:

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

Một lần nữa với a là 15, tôi nhận được một nhiều kết quả khác nhau: khoảng 17.

cả hai đều được giải quyết phương trình này:

enter image description here

Tại sao điều này như vậy? Đối với những gì tôi đang làm việc trên, Visual Basic mang lại kết quả tôi đang tìm kiếm.

Trả lời

24

^XOR operator bằng java. Sử dụng Math.pow(2,8)2^8 trong Visual Basic.

+1

Bên cạnh điều XOR, trong Java a là int hoặc double? Bởi vì nếu int của nó, sau đó a/x là int quá. – pablosaraiva

+0

'a' là giá trị gấp đôi trong trường hợp này. – Kenan

+0

Cảm ơn! Giải pháp này hiệu quả. Tôi đã tự hỏi tại sao 'Math.pow()' thậm chí tồn tại nếu tôi chỉ có thể sử dụng '^' (mà bây giờ tôi biết tôi không thể). – Kenan