Dưới đây là một ví dụ:Gấp đôi giá trị trả về 0
Double d = (1/3);
System.out.println(d);
này trả về 0, không 0,33333 ... như mong muốn.
Có ai biết không?
Dưới đây là một ví dụ:Gấp đôi giá trị trả về 0
Double d = (1/3);
System.out.println(d);
này trả về 0, không 0,33333 ... như mong muốn.
Có ai biết không?
Đó là bởi vì 1
và 3
được coi là integers
khi bạn không chỉ định khác, vì vậy 1/3
đánh giá với integer
0
mà sau đó được đúc vào double
0
. Để khắc phục, hãy thử (1.0/3)
hoặc có thể 1D/3
để nêu rõ rằng bạn đang xử lý các giá trị kép.
Nếu bạn có int
s mà bạn muốn chia sử dụng phân dấu chấm động, bạn sẽ phải cast int
đến một double
:
double d = (double)intValue1/(double)intValue2
(Trên thực tế, chỉ đúc intValue2
nên là đủ để có các intValue1
được đúc để double
tự động, tôi tin.)
sử dụng đôi và không đúp trừ khi bạn cần phải sử dụng những valu es trong ý nghĩa đối tượng. Hãy lưu ý về các khái niệm Autoboxing
OP hỏi về các phương pháp cắt ngắn của Java và tại sao một phân tách các số nguyên bị cắt bớt, ngay cả khi được lưu trữ trong một đôi; không phải về autoboxing. – MathSquared
Có thể trùng lặp [Phân chia trong Java luôn dẫn đến số không (0)?] (Http://stackoverflow.com/questions/10455677/division-in-java-always-results-in- zero-0) –
@ ΦXocę 웃 Пepeúpa ツ Nó không phải là một bản sao. Câu hỏi đó là một bản sao của câu hỏi này. Nhìn vào những ngày trước khi bạn gắn cờ – Zoe