2012-06-14 26 views
9

Giả sử tôi muốn làm tròn float đến int trong Java.
Ví dụ,Tại sao không có ceil (float) trong Java?

roundUp(0.2) = 1 
roundUp(0.7) = 1 
roundUp(1.3) = 2 
... 

Tôi muốn gọi Math.ceilMath.round để làm điều đó nhưng java.lang.Math không cung cấp ceil(float). Nó chỉ cung cấp ceil(double). Vì vậy, float tôi được thăng chức double âm thầm, ceil(double) lợi nhuận doubleround(double) lợi nhuận long trong khi tôi cần phải làm tròn lên float để int (không long).

Bây giờ tôi tự hỏi tại sao java.lang.Math chỉ có ceil(double) và không có ceil(float).

+3

Tôi lưu ý với một số giải trí nhỏ mà các con số trong ví dụ của bạn là gấp đôi, không nổi! –

Trả lời

15

Bạn có thể làm:

value = (int) Math.ceil(value); 

Nếu bạn biết rằng value là một phao sau đó bạn có thể đúc kết quả trở lại float hoặc int.

Thư viện Java không có nghĩa là cung cấp cả hai số ceil(float)ceil(double) vì tất cả các đối số nổi có thể được chuyển đến phương thức ceil(double) với cùng một kết quả.

+1

+1 hoặc 'int intValue = (int) Math.ceil (giá trị);' –

+0

@PeterLawrey: cảm ơn, tôi đã cập nhật câu trả lời vì câu hỏi thực sự là về việc thu thập 'int'. –

+0

Tôi muốn tránh đúc. Nó trông không an toàn. – Michael

Các vấn đề liên quan