Khi tôi gọi Math.ceil(5.2)
khoản hoàn lại là double
6.0
. Độ nghiêng tự nhiên của tôi là để nghĩ rằng Math.ceil(double a)
sẽ trả lại một long
. Từ các tài liệu:Tại sao Math.ceil trả lại gấp đôi?
ceil(double a)
Trả nhỏ nhất (gần nhất đến vô cùng tiêu cực)
double
giá trị đó là không ít hơn so với lập luận và bằng một số nguyên toán học.
Nhưng tại sao trả lại double
thay vì số long
khi kết quả là số nguyên? Tôi nghĩ rằng hiểu được lý do đằng sau nó có thể giúp tôi hiểu Java tốt hơn một chút. Nó cũng có thể giúp tôi tìm ra nếu tôi gặp rắc rối bằng cách chuyển sang một số long
, ví dụ: là
long b = (long)Math.ceil(a);
luôn là điều tôi nghĩ? Tôi sợ rằng có thể có một số trường hợp ranh giới có vấn đề.
Xem http://stackoverflow.com/questions/3412449/why-does-math-round-return-a-long-but-math-floor-return-a-double – starblue