2016-03-13 27 views
5

Tại sao phép gán biểu mẫu int = int * double đưa ra lỗi, và gán một biểu mẫu int * = double không đưa ra lỗi (trong Java)?Tại sao int = int * double đưa ra một lỗi và int * = double không (trong Java)?

Ví dụ:

public class TestEmp { 

    public static void main(String[] args) { 

     double e = 10; 
     int r = 1; 
     r *= e; 

     r = r * e; 
     System.out.println("De uitkomst van r :" + r); 

    } 
} 

r *= e được chấp nhận và r = r * e thì không. Tại sao?

Trả lời

9

r = r * e cho bạn lỗi do kết quả của r * edouble do đó sẽ mất chính xác khi bạn lưu trữ trong int.

r *= e không cung cấp cho bạn lỗi vì đó là cú pháp đường cho r = (int)(r * e) (source).

0

Đó là vì re là các loại khác nhau. Khi sử dụng toán tử gán ký tự như *=, các loại là narrowly được chuyển đổi sau hậu trường (hoàn toàn). Toán tử * không chuyển đổi hoàn toàn, do đó bạn phải chuyển đổi rõ ràng bằng cách truyền vào trong:

r = (int) (r * e); 
Các vấn đề liên quan