Hãy thử loại
double b = 317/219D;
Giá trị mặc định này số mã trong java là int
, như vậy với các mã như bạn có nó java đang làm việc với hai int
số và kết quả của việc phân chia sau đó cũng sẽ là int
, sẽ cắt ngắn phần thập phân để đưa ra kết quả cuối cùng là 1
. Sau đó, kết quả int
này được truyền từ int 1
đến double 1
mà không có cảnh báo trình biên dịch vì đó là việc mở rộng mở rộng (một nơi mà loại nguồn được đảm bảo "vừa" thành loại mục tiêu).
Bằng cách mã hóa một trong những con số như double
với trailing D
(bạn cũng có thể sử dụng d
, nhưng tôi luôn luôn sử dụng chữ cái viết hoa vì L
như chữ thường l
trông giống như một 1
), kết quả của việc phân chia sẽ double
quá .
đầu ra sẽ là 1.0 để chính xác hơn –
Bản sao có thể có của [Phân tách số nguyên Java: Ho w để bạn tạo ra một đôi?] (http: // stackoverflow.com/questions/3144610/java-integer-division-how-do-bạn-sản xuất-a-double). Tôi đã lựa chọn, nhưng câu hỏi này được hỏi quá nhiều lần trên SO. – demongolem