2010-12-27 41 views
110

Tôi dường như không thể tìm thấy câu trả lời mà tôi đang tìm kiếm về một câu hỏi đơn giản: làm cách nào để làm tròn lên bất kỳ số nào tới số int gần nhất?Java Vòng lên Bất kỳ Số nào

Ví dụ, bất cứ khi nào số lượng là 0,2, 0,7, 0,2222, 0,4324, 0,99999 tôi muốn kết quả là 1.

Cho đến nay tôi có

int b = (int) Math.ceil(a/100); 

Nó dường như không được làm công việc, mặc dù.

+0

Tại sao bạn chia 100 cho mã mẫu của mình? –

+12

Tôi đặt cược 'a' của bạn có kiểu số nguyên. –

+0

Hãy cho chúng tôi biết đầu vào của bạn là gì và các kết quả đầu ra mong đợi của bạn. –

Trả lời

216

Math.ceil() là chức năng chính xác để gọi. Tôi đoán aint, điều này sẽ làm cho a/100 thực hiện số học số nguyên. Hãy thử Math.ceil(a/100.0) để thay thế.

int a = 142; 
System.out.println(a/100); 
System.out.println(Math.ceil(a/100)); 
System.out.println(a/100.0); 
System.out.println(Math.ceil(a/100.0)); 
System.out.println((int) Math.ceil(a/100.0)); 

Đầu ra:

1 
1.0 
1.42 
2.0 
2 

Xem http://ideone.com/yhT0l

+1

ah, tại chỗ trên ... cảm ơn – Stevanicus

+1

điều này chỉ khi "a" là gấp đôi –

+0

^^ "a" cần phải gấp đôi hoặc tạo gấp đôi. – Codeversed

12

Tôi không biết tại sao bạn lại chia cho 100 nhưng ở đây giả định của tôi int a;

int b = (int) Math.ceil(((double)a)/100); 

hoặc

int b = (int) Math.ceil(a/100.0); 
6
int RoundedUp = (int) Math.ceil(RandomReal); 

Điều này dường như thực hiện công việc hoàn hảo. Làm việc mọi lúc.

1

Giả sử là gấp đôi và chúng tôi cần số được làm tròn không có chữ số thập phân. Sử dụng hàm Math.round().
Đây là giải pháp của tôi.

double a = 0.99999; 
int rounded_a = (int)Math.round(a); 
System.out.println("a:"+rounded_a); 

Output : 
a:1 
+0

Đây là một câu trả lời sai, vì nó được yêu cầu ở đây để vòng UP nếu a = 0,2 kết quả sẽ là 0 – Mohamed23gharbi

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