Bạn đang thao tác 157 / 32 chia hai số nguyên với nhau, điều này luôn dẫn đến 1 số ít nguyên được làm tròn xuống. Vì vậy, ( int ) Math. ceil (… ) không làm gì cả. Có ba giải pháp khả thi để đạt được những gì bạn muốn. Tôi khuyên bạn nên sử dụng tùy chọn 1 hoặc tùy chọn 2. Vui lòng KHÔNG sử dụng tùy chọn 0.
Tùy chọn 0
Chuyển đổi a và nhân b đôi, và bạn hoàn toàn có thể sử dụng phép chia và Math. ceil như bạn muốn nó hoạt động giải trí. Tuy nhiên tôi rất không khuyến khích việc sử dụng giải pháp này, chính bới sự phân loại kép hoàn toàn có thể không đúng chuẩn. Để đọc thêm về sự thiếu đúng mực của đôi, xem thắc mắc này.
int
n
=
(
int
)
Math
.
ceil
( (
double
)
a
/
b
) ) ;
lựa chọn 1
int
n
=
a
/
b
+
( (
a
%
b
= =
0
)
?
0
:
1
) ;
Bạn làm a / b với luôn sàn nếu a và b đều là số nguyên. Sau đó, bạn có một phù thủy if-statement nội tuyến kiểm tra xem bạn có nên trần thay vì sàn hay không. Vì vậy, + 1 hoặc + 0, nếu có phần còn lại với phép chia bạn cần + 1. a % b = = 0 kiểm tra phần còn lại.
Lựa chọn 2
Tùy chọn này rất ngắn, nhưng hoàn toàn có thể so với một số ít ít trực quan hơn. Tôi nghĩ cách tiếp cận ít trực quan này sẽ nhanh hơn chiêu thức so sánh và chia đôi :
int
n
=
(
a
+
b
–
1
)
/
b
;
Để giảm năng lực tràn, bạn hoàn toàn có thể sử dụng như sau. Tuy nhiên xin quan tâm rằng nó không hoạt động giải trí cho a = 0 và b
int
n
=
(
a
–
1
)
/
b
+
1
;
Giải thích đằng sau ” cách tiếp cận ít trực quan hơn “
Vì việc chia hai số nguyên trong Java ( và hầu hết các ngôn từ lập trình khác ) sẽ luôn tạo ra tác dụng. Vì thế :
int
a
,
b
;
int
result
=
a
/
b
(
is the same as floor
(
a
/
b
)
)
Nhưng chúng tôi không muốn floor(a/b), nhưng ceil(a/b), và sử dụng các định nghĩa và cốt truyện từ Wikipedia :
Với các lô của công dụng sàn và trần bạn hoàn toàn có thể thấy mối quan hệ.
Bạn hoàn toàn có thể thấy điều đó floor ( x )
ceil
(
a
/
b
)
=
floor
(
a
/
b
+
s
)
=
floor
(
a
/
b
+
(
b
–
1
) /
b
)
=
floor
(
(
a
+
b
–
1
) /
b
)
)
Đây không phải là một bằng chứng thực sự, nhưng tôi kỳ vọng bạn hài lòng với nó. Nếu ai đó hoàn toàn có thể lý giải nó tốt hơn tôi cũng sẽ nhìn nhận cao nó. Có thể hỏi nó trên MathOverflow.
Xem thêm nhiều hướng dẫn và cách làm hay khác: https://cachlam.org/huong-dan