thể trùng lặp:
Varying behavior for possible loss of precisionTại sao Java thực hiện chuyển đổi loại ngầm từ đôi thành số nguyên khi sử dụng toán tử "plus equals"?
Mã Mẫu Một
public class Test {
public static void main(String[] args) {
int i = 0;
i = i + 1.5;
}
}
Mã mẫu B
public class Test {
public static void main(String[] args) {
int i = 0;
i += 1.5;
}
}
Unsurprisin gly, biên dịch A tạo ra lỗi dưới đây. Đáng ngạc nhiên, biên dịch B không có lỗi và nó xuất hiện để hành xử như thể tôi chèn một diễn viên rõ ràng để số nguyên trước khi giá trị gấp đôi 1.5. Tại sao điều này lại xảy ra? Điều này đi ngược lại mọi thứ tôi nghĩ tôi biết!
Test.java:6: possible
loss of precision
found : double
required: int
i = i + 1.5;
^
1 error
@ Dave là đúng trên một phần bối rối. Ồ, không có ngôn ngữ nào là hoàn hảo. :) –